Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Setup.py-依赖项作为TAR或GIT的url_Python_Dependencies_Setuptools_Setup.py - Fatal编程技术网

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

  • 仅支持
    安装所需的
  • 对于软件包(
    install\u requires
    )和standalone
    requirements.txt
    或类似文件的定义中的依赖项,首选PEP 508符号
  • 中止软件包的安装,这些软件包包含
    安装所需的链接
您对依赖项的定义混合了两种符号:前缀如
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链接中的
    -通过
    -
    进行分隔
  • 可以省略这个版本。但是,唯一可行的用例是如果PyPI中没有该包,并且很少更新。如果该包存在于PyPI中,但需要未发布的版本,则必须指定该版本
  • 最糟糕的是:修复
    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上的几个问题仍然悬而未决,有待解决