Python Setup.py-依赖项作为TAR或GIT的url
根据我的研究,以下内容应该有效:Python Setup.py-依赖项作为TAR或GIT的url,python,dependencies,setuptools,setup.py,Python,Dependencies,Setuptools,Setup.py,根据我的研究,以下内容应该有效: 从设置工具导入设置 从setuptools导入查找包 ... 需要\u安装=[ '空间==2.3.2', ‘tensorflow==1.14.0’, 'Keras==2.2.4', “凯拉斯-contrib@git+https://github.com/keras team/keras contrib.git#egg=keras contrib', '核心网-sm@https://github.com/explosion/spacy models/release
从设置工具导入设置
从setuptools导入查找包
...
需要\u安装=[
'空间==2.3.2',
‘tensorflow==1.14.0’,
'Keras==2.2.4',
“凯拉斯-contrib@git+https://github.com/keras team/keras contrib.git#egg=keras contrib',
'核心网-sm@https://github.com/explosion/spacy models/release/download/en_core_web_sm-2.3.0/en_core_web_sm-2.3.0.tar.gz#egg=en core web sm'
]
...
设置(
name=name,
版本=版本,
描述=描述,
install\u requires=需要安装,
...
)
当构建轮子或鸡蛋时,一切正常:python setup.py bdist\u wheel
但是当尝试使用pip install-U dist/mypack-..whl
安装软件包(whl或egg)时
我得到:
ERROR: Could not find a version that satisfies the requirement keras-contrib (from mypack==0.3.5) (from versions: none)
ERROR: No matching distribution found for keras-contrib (from mypack==0.3.5)
...
ERROR: Could not find a version that satisfies the requirement en-core-web-sm (from mypack==0.3.5) (from versions: none)
ERROR: No matching distribution found for en-core-web-sm (from mypack==0.3.5)
我曾尝试通过setup.cfg
进行相同的设置,但仍然没有成功
作为参考-首先从
requirements.txt
安装它们,然后安装控制盘时,所有这些依赖项都起作用
spacy==2.3.2
tensorflow==1.14.0
Keras==2.2.4
keras-contrib@git+https://github.com/keras-team/keras-contrib.git#egg=keras-contrib
en-core-web-sm@https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.0/en_core_web_sm-2.3.0.tar.gz#egg=en-core-web-sm
pip安装-r requirements.txt
pip安装-U区/mypack-…whl
但这不是干净的方式,因为轮子应该是独立的
谢谢你的提示
环境
- Python:3.7.0
- Pip:20.2.4
- 设置工具:50.3.2
requirements.txt
或类似文件,其中包含PyPI包的规范以及到存储库和归档的链接
这就需要解析requirements.txt
并将它们分为“需求”和“依赖项”,其中“需求”将包含PyPI包和“依赖项”链接的定义
Setuptools的setup()
参数与以下参数不同:和
它确实起了作用:一个人能够定义一个requirements.txt
,并将一个包安装为pythonsetup.py安装
和pip安装。
。此外,还可以通过pip install-r requirements.txt
安装依赖项。所有方法都有效,允许在一个地方定义所有需求,包括非PyPI链接
然而,自v19以来,pip
放弃了对dependency\u链接
arg的支持。奇怪的是:它不是被setuptools
丢弃的。但还有更多
截至今天,pip
:
- 仅支持
安装所需的
- 对于软件包(
)和standaloneinstall\u requires
或类似文件的定义中的依赖项,首选PEP 508符号requirements.txt
- 中止软件包的安装,这些软件包包含
安装所需的链接
keras contrib@
来自PEP 508,而#egg=
部分来自setuptools
链接符号
这不是问题:pip
将忽略“鸡蛋”,因为在@
之前已经定义了名称
我相信通过pip
安装软件包可以正常工作,即:
pip安装。
但是,如果通过setuptools
安装软件包,则会出现问题,即:
python setup.py安装
setuptools
不理解PEP 508符号,并忽略install\u requires
中的链接。从今天起,要创建setuptools
以下链接,必须使用install\u requires
和dependency\u链接,例如:
设置(
...
安装所需的=[
...
“keras_contrib==2.0.8”,
...
],
依赖链接=[
"https://github.com/keras-team/keras-contrib/tarball/master#egg=keras_contrib-2.0.8",
...
],
)
这里有几个棘手的问题:
- 单个依赖项定义在两个位置:在
install\u requires
中的程序包名称和在dependency\u links
中的链接来解析程序包依赖项
- 链接不是git+https://.../....git
,但它是指向存档的链接:https://.../tarball/...
snake\u格中
,不在破折号格中
。虽然可以使用仪表板外壳
,但不允许指定版本install\u requires
中的版本通过=
和dependency\u链接中的-通过-
进行分隔
setuptools
的链接会破坏pip
,因为PEP508不允许指定版本。将keras contrib==x.y.z@…
保留在install\u requires
中将使pip
搜索包keras contrib==x.y.z
,其中==x.y.z
不是版本,而是名称的一部分。同时,不指定版本将使setuptools
获取PyPI上的最新版本,而不是dependency\u links
中的链接
在您的情况下,PyPI既不存在keras contrib
也不存在en-core-web sm
,因此使用keras_contrib@git+https:/…
+依赖项链接
如果没有指定版本,可能会正常工作
否则,请坚持使用pip安装。
如果软件包依赖于链接,请避免使用python setup.py安装
另见:
琐事:GitHub上的几个问题仍然悬而未决,有待解决