点安装错过 setup.py



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

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

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

谢谢!

编辑:我完全修改了我的答案,使事情变得更容易(我希望)。

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

如果需要指定应作为发行版一部分的其他文件或目录,则可以在调用setup(...)时定义package_data和/或data_files参数。有关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中列出的文件将在安装时自动复制; -当要setup(...)include_package_data参数设置为True时,才会复制MANIFEST.in中列出的文件。

但是,请注意,package_data中列出的文件仅在不使用sdist时才包含在您的安装中(即仅用于二进制分发)。因此,始终将MANIFEST.ininclude_package_data=True结合使用更安全。

相关内容

  • 没有找到相关文章

最新更新