pip install错过setup.py

时间:2018-04-10 08:01:22

标签: python python-3.x pip setup.py

我创建了一个非常简单的python项目,包括空foo.pysetup.py

setup( # ...
    name='any_name',
    version='1.4',
    py_modules=['foo']
# ...
)

然后将其分发到我当地的pypi repo(Nexus):$ python setup.py sdist upload -r mypypi 回购邮件的zip文件中有setup.py 并安装到我当前的文件夹:$ pip install --target=. any_name
安装的文件夹中没有setup.py 我希望setup.py必须在已安装的文件夹中。这是对的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

已编辑:我完全修改了我的答案,以便让事情变得更轻松(我希望)。

setup.py不需要安装,只需安装软件包即可。默认情况下,当基于setup.py创建分发时,它已包含多个文件和/或目录(例如{setup}中packages参数中引用的模块{...} , setup.py , * .txt`文件,等等)。可以在此处找到自动捆绑在分发中的文件的完整列表:https://docs.python.org/3.6/distutils/sourcedist.html#specifying-the-files-to-distribute

如果您需要指定应属于您的发行版的其他文件或目录,则可以在调用package_data时定义data_files和/或setup(...)参数。有关package_datadata_files的预期格式的详细信息,请参阅ttps://docs.python.org/3.6/distutils/setupscript.html#distutils-installing-package-data。

您还可以定义MANIFEST.in文件,列出需要成为分发的一部分的所有文件和目录。默认情况下,package_datadata_files中列出的所有文件都会自动附加到MANIFEST.in中列出的文件中。

请注意,MANIFEST.in中定义的所有文件都将成为您的发行版的一部分,但在安装软件包时不一定包含这些文件。我从Python包装文档中了解到:   - package_datadata_files中列出的文件将在安装时自动复制;   - MANIFEST.in中列出的include_package_data参数设置为setup(...)时,True中列出的文件只会被复制

但请注意,如果您未使用package_data(即仅用于二进制分发),则sdist中列出的文件仅包含 。因此,始终依赖MANIFEST.ininclude_package_data=True相结合更为安全。