相关疑难解决方法(0)

如何在我的包中获得setup.py(setuptools)中定义的版本?

我如何setup.py从我的包中获得定义的版本(用于--version或其他目的)?

python setuptools

139
推荐指数
10
解决办法
6万
查看次数

使用setup.py和软件包共享软件包版本的正确方法是什么?

使用distutils,setuptools等,包版本指定在setup.py:

# file: setup.py
...
setup(
name='foobar',
version='1.0.0',
# other attributes
)
Run Code Online (Sandbox Code Playgroud)

我希望能够从包中访问相同的版本号:

>>> import foobar
>>> foobar.__version__
'1.0.0'
Run Code Online (Sandbox Code Playgroud)

我可以添加__version__ = '1.0.0'到我的包的__init__.py,但我还想在我的包中包含其他导入以创建包的简化接口:

# file: __init__.py

from foobar import foo
from foobar.bar import Bar

__version__ = '1.0.0'
Run Code Online (Sandbox Code Playgroud)

# file: setup.py

from foobar import __version__
...
setup(
name='foobar',
version=__version__,
# other attributes
)
Run Code Online (Sandbox Code Playgroud)

但是,foobar如果导入其他尚未安装的软件包,这些额外的导入可能会导致安装失败.使用setup.py和软件包共享软件包版本的正确方法是什么?

python distutils setuptools

62
推荐指数
4
解决办法
1万
查看次数

如何用git重写python __version__?

我想__version__在我的模块中定义一个变量,它应该在git commit上自动更新,类似于SVN关键字的功能.有没有办法在Git中实现它?有没有人有一个有效的例子?

我考虑使用GitPython,但我不想引入另一个依赖项,我希望用户从SVN repo或zip包下载模块具有相同的版本控制方案(我不在乎这是一些难以理解的哈希).

编辑:我的特殊问题是我必须运行模拟,其结果取决于模拟脚本的确切版本.因此,每次我必须将版本号与模拟结果一起存储.如果两者都不同步,则可能会产生非常可怕的结果.

python git

43
推荐指数
3
解决办法
1万
查看次数

setup.py(setuptools)和源代码中的自动版本号?

情况:

我有一个python库,由git控制,并与distutils/setuptools捆绑在一起.我想基于git标签自动生成版本号,包括for setup.py sdist和alike命令,以及库本身.

对于我可以使用的第一个任务git describe或类似的解决方案(请参阅 如何在我的包中的setup.py(setuptools)中定义版本?).

例如,当我在标签'0.1'并且要求'setup.py sdist'时,我得到'mylib-0.1.tar.gz'; 或'mylib-0.1-3-abcd.tar.gz'如果我在标记后更改了代码.这可以.

问题是:

当我想让这个版本号可用于库本身时,问题出现了,所以它可以将它作为'mylib/0.1-3-adcd'发送到User-Agent HTTP头中.

如果我添加setup.py version命令,如何在我的包中获得setup.py(setuptools)中定义的版本?,然后在制作标签后生成此version.py,因为它使用标记作为值.但是在这种情况下,我需要在制作版本标记之后再进行一次提交,以使代码保持一致.反过来,这需要一个新标签进行进一步捆绑.

问题是:

如何打破这个依赖圈(generate-commit-tag-generate-commit-tag -...)?

python git distutils version setuptools

37
推荐指数
5
解决办法
2万
查看次数

Python的argparse用prog和版本字符串格式显示程序的版本

在argparse中指定程序名称和版本信息的首选方法是什么?

__version_info__ = ('2013','03','14')
__version__ = '-'.join(__version_info__)
...
parser.add_argument('-V', '--version', action='version', version="%(prog)s ("+__version__+")")

python version argparse

34
推荐指数
2
解决办法
1万
查看次数

Django应用程序中的版本号

我正在开发一个Django应用程序,我想显示应用程序的版本(这样一来,发现错误的人知道应用程序的版本并可以提供更好的错误报告).

是否有一种普遍接受的方式来存储Django中的版本号(我的意思是我的应用程序的版本,而不是Django)?

django

31
推荐指数
6
解决办法
8780
查看次数

在“pyproject.toml”中使用环境变量进行版本控制

我正在尝试将我的包从 迁移setup.pypyproject.toml,但我不确定如何以与以前相同的方式进行动态版本控制。目前,当构建用于开发时,我可以使用环境变量传递开发版本。

该文件setup.py看起来类似于:

import os

from setuptools import setup

import my_package


if __name__ == "__main__":
    dev_version = os.environ.get("DEV_VERSION")
    version = dev_version if dev_version else f"{my_package.__version__}"
    
    setup(
        name="my_package",
        version=version,
        ...
    )
Run Code Online (Sandbox Code Playgroud)

使用文件时有没有办法做类似的事情pyproject.toml

python version setuptools pyproject.toml

17
推荐指数
1
解决办法
6576
查看次数

在setuptools包上的Pyinstaller

我正在尝试在我使用Click库在Python中构建的CLI应用程序上运行PyInstaller .我在使用PyInstaller构建项目时遇到了麻烦.PyInstaller在他们的GitHub wiki中有一个名为Recipe Setuptools Entry Point的文档,该文档提供了有关如何将PyInstaller与setuptools包一起使用的信息,我正在为此项目使用它.但是,它似乎在我运行时找不到基本模块pyinstaller --onefile main.spec.

我的问题是:问题只是我的文件夹结构的问题吗?Recipe Setuptools入口点是否采用某种文件结构?

相关信息

Pyinstaller输出

184 INFO: PyInstaller: 3.3.1
184 INFO: Python: 3.6.4
189 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
193 INFO: UPX is available.
Traceback (most recent call last):
  File "/usr/local/bin/pyinstaller", line 11, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 94, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 791, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File …
Run Code Online (Sandbox Code Playgroud)

python setuptools pyinstaller python-3.x python-click

10
推荐指数
1
解决办法
3043
查看次数

如何找到Seaborn版本

我已经在我的机器上安装了Seaborn.Seaborn工作正常.我需要找到安装Seaborn的版本.我用什么命令来查找Seaborn的版本?

python pandas seaborn

9
推荐指数
1
解决办法
7484
查看次数

如何对 Python 程序进行版本控制

我正在编写一个 Python 程序(用于 Linux 环境),我希望它支持该程序的版本实现。我在某处读到我应该添加一行“__ Version __”,但我不太确定在哪里以及如何放置它。我想要实现的目标是不必每次要安装新版本时都删除整个程序。谢谢!

python version

5
推荐指数
1
解决办法
1万
查看次数

如何使用SVN和distutils为Python包分配版本号?

我正在写一个Python包.程序包需要在内部知道其版本号,同时在setup.py脚本中也包含此版本distutils.

这样做的最佳方法是什么,因此版本号不需要在两个不同的位置维护?我不想setup.py从我的库的其余部分导入脚本(这看起来相当愚蠢),我不想从setup.py脚本中导入我的库(同样).理想情况下,我只是设置一个关键字,svn并自动将其替换为文件,但似乎不可能svn.我可以在两个地方读取包含版本号的常见文本文件 - 这是最好的解决方案吗?

澄清一下:我想在一个地方保留版本号.是的,我可以在包中添加一个变量,然后再在setup.py文件中.但是他们不可避免地会失去同步.

python svn distutils

4
推荐指数
1
解决办法
804
查看次数

在Python项目中添加版本控制/编号(?)

目前我的Java项目,通过将其声明为Maven项目,我可以完全控制版本.但是我现在有一个我要标记的Python项目0.2.0没有版本控制.因此,我是否应该在以后的日程中使用此代码,我不会知道它是什么版本.

如何将版本控制添加到Python项目,就像Maven为Java做的那样?

python version-control

2
推荐指数
1
解决办法
2704
查看次数

公开模块版本号的首选方法是什么?

什么是/是否有一种首选方式来公开模块版本号?

......显然,在这件事上有很多不同的用法!

python

1
推荐指数
1
解决办法
414
查看次数