Python 2.7 requirements.txt不考虑通配符*

Python 2.7 requirements.txt不考虑通配符*,python-2.7,setup.py,Python 2.7,Setup.py,我使用setup.py构建了一个定制python包,其版本类似于2.0.1、2.0.2等,并将其存储在artifactory中 现在在我的requirements.txt中,如果我这样添加: custom-package==2.0.2 custom-package==2.* 它工作得非常好。它从artifactory获取正确的版本并安装它,然后继续我的过程 但如果我把它改成这样: custom-package==2.0.2 custom-package==2.* 然后它从artifa

我使用setup.py构建了一个定制python包,其版本类似于
2.0.1、2.0.2
等,并将其存储在artifactory中

现在在我的
requirements.txt
中,如果我这样添加:

custom-package==2.0.2 
custom-package==2.*
它工作得非常好。它从artifactory获取正确的版本并安装它,然后继续我的过程

但如果我把它改成这样:

custom-package==2.0.2 
custom-package==2.*
然后它从artifactory中找到最新的定制包版本,在我的例子中是
2.0.2
,并安装它。但同时它显示版本安装是
0.0.0
而不是
2.0.2
在我的日志文件中是这样的:

Collecting custom-package==2.*
Downloading https://swfactory.com/artifactory/api/pypi/pypi/app/custom-package/master/custom-package-2.0.2.tar.gz (77 kB)
WARNING: Requested custom-package==2.* from https://swfactory.com/artifactory/api/pypi/pypi/app/custom-package/master/custom-package-2.0.2.tar.gz#md5=0bfccc319d9b8108540b75d28980482d (from -r requirements.txt (line 1)), but installing version 0.0.0
如果我使用pip
pip freeze | grep“custom package”
-->它会给我
0.0.0
而不是
2.0.2
我应该做什么更改,以便它反映我的自定义包的正确版本

setup.py的我的设置

def version():
    if os.getenv('BRANCH') == "NON_MASTER":
        __version__ = os.getenv('VERSION')
    else:
        __version__ = os.getenv('VERSION')

    return __version__

setup(
    name="custom_package",
    version=version(),
    ......
    ......

setup.py
不可能工作

计算版本号不应依赖于外部环境。它应该是静态的,或者完全依赖于sdist本身中包含的内容(例如读取sdist中包含的
version.txt
文件)

我认为这里发生的事情是,当pip构建sdist时,它是在一个隔离的环境中进行的,如果我没有弄错的话,这种隔离不会让环境变量通过(除了一些选定的变量,比如
pip.*
)。那是我的猜测。无论如何,即使pip的构建隔离没有抑制环境变量,也无法控制不同机器上的环境。如果我要在我的机器上安装它,环境变量
BRANCH
VERSION
的值会是多少


我不确定它如何结束为
0.0.0
,但具体来说,这可能是使用的默认值,而不是空字符串。

setup.py
不可能工作

计算版本号不应依赖于外部环境。它应该是静态的,或者完全依赖于sdist本身中包含的内容(例如读取sdist中包含的
version.txt
文件)

我认为这里发生的事情是,当pip构建sdist时,它是在一个隔离的环境中进行的,如果我没有弄错的话,这种隔离不会让环境变量通过(除了一些选定的变量,比如
pip.*
)。那是我的猜测。无论如何,即使pip的构建隔离没有抑制环境变量,也无法控制不同机器上的环境。如果我要在我的机器上安装它,环境变量
BRANCH
VERSION
的值会是多少


我不确定它如何结束为
0.0.0
,但具体来说,这可能是使用的默认值,而不是空字符串。

为什么两个分支包含相同的代码?这是复制/粘贴问题吗?否,基于作为参数传递给setup.py的分支版本号。这并没有澄清任何问题。无论
BRANCH==NON_MASTER
\u版本
始终设置为环境变量
version
的值。你想做什么?我试图调用
设置中的
version()
,并且版本是基于分支设置的,比如说非主分支中的分支,那么版本将作为N.N.N.ddmmyyyyy.BUILDID传递,如果分支是主分支,那么版本将作为N.N.N传递。这个setup.py是从git管道调用的。我不明白你的意思。你的代码对我来说毫无意义。也看看我的答案。我高度怀疑这一切能否产生任何有意义的结果。关于我的答案有什么问题吗?为什么两个分支包含相同的代码?这是复制/粘贴问题吗?否,基于作为参数传递给setup.py的分支版本号。这并没有澄清任何问题。无论
BRANCH==NON_MASTER
\u版本
始终设置为环境变量
version
的值。你想做什么?我试图调用
设置中的
version()
,并且版本是基于分支设置的,比如说非主分支中的分支,那么版本将作为N.N.N.ddmmyyyyy.BUILDID传递,如果分支是主分支,那么版本将作为N.N.N传递。这个setup.py是从git管道调用的。我不明白你的意思。你的代码对我来说毫无意义。也看看我的答案。我高度怀疑这一切能否产生任何有意义的结果。关于我的答案有什么问题吗?