我创建了一个Python软件包,将其上传到TestPypi,然后尝试将其安装到新的虚拟环境中。PIP无法安装所需的软件包,但是如果我尝试使用pip install -r requirements.txt
安装相同的软件包,则可以工作。
我按照包装Python项目中列出的准则创建了我的setup.py
文件。我将包裹上传到TestPypi,并尝试将其安装到使用Python 3.6.4
和pip 19.1.1
的全新虚拟环境中。
这是我的安装说明:pip install -i https://test.pypi.org/simple/ my-package-name==0.0.1
这是我在setuptools.setup
呼叫(仅相关的内容(中所拥有的:
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
],
install_requires=[
"requests",
"jsonpickle",
"pandas",
"matplotlib",
"seaborn",
"Pillow"
]
它从成功安装matplotlib开始,但是我稍后会出现以下错误:
ERROR: Could not find a version that satisfies the requirement jsonpickle (from my-package-name==0.0.1) (from versions: none)
ERROR: No matching distribution found for jsonpickle (from my-package-name==0.0.1)
我还尝试了指定软件包版本,但是我无法安装任何软件包。
正如我所说的,我可以通过使用pip install -r requirements.txt
命令来安装软件包。
这是testpypi的不幸(并已知(的缺点:问题是jsonpickle
在testpypi上不存在,并且通过从那里安装软件包,您正在告诉pip
查找依赖项也在那里。
相反,您应该将其发布到PYPI,并使用预发行版本,以免污染您的版本。您可以稍后从项目中删除这些预释放。
如果您创建一个要求。TXT文件,然后在该文件中添加所需的包装。py
例如
需求.txt
requests
jsonpickle
pandas
matplotlib
seaborn
Pillow
and in setup.py
with open('requirements.txt') as f:
requirements = f.read().splitlines()
...
setup(
name='package name',
version='version',
install_requires=requirements,
...
)
为什么这样? ->通过这种方式,您只需要维护要求。