Python 如何从模块中定位源代码路径
我在Python 如何从模块中定位源代码路径,python,setup.py,site-packages,Python,Setup.py,Site Packages,我在/Document/pythonpackage目录中使用源代码构建了一个python包 /Document/pythonpackage/> python setup.py install 这将在python的site packages目录中创建一个文件夹 import pythonpackage print(pythonpackage.__file__) >/anaconda3/lib/python3.7/site-packages/pythonpackage-x86_64.e
/Document/pythonpackage
目录中使用源代码构建了一个python包
/Document/pythonpackage/> python setup.py install
这将在python的site packages
目录中创建一个文件夹
import pythonpackage
print(pythonpackage.__file__)
>/anaconda3/lib/python3.7/site-packages/pythonpackage-x86_64.egg/pythonpackage/__init__.py
我正在多个环境中运行一个脚本,因此我知道唯一的路径是
pythonpackage.\uuu文件\uu
。但是Document/pythonpackage中有一些数据不在站点包中,如果您只能访问python中的模块,是否有办法自动找到/Document/pythonpackage
的路径?不确定,但您可以为模块创建存储库并使用pip安装它。然后,egg文件夹将有一个名为PKG-INFO的文件,其中将包含您从中导入模块的存储库的url。不鼓励这样工作。一般认为,安装包后,用户可以删除安装目录(大多数自动化包管理器都会这样做)。相反,您应该确保您的setup.py
将所有数据文件复制到相关位置,然后您的代码将从那里获取它们
假设您使用的是标准的setuptools
,您可以在上看到文档,底部显示:
总之,这三个选项允许您:
include\u package\u数据
接受MANIFEST.in匹配的所有数据文件和目录
package\u数据
指定其他模式以匹配源代码管理中的MANIFEST.in可能匹配或不匹配的文件
排除包数据
为安装包时不应包括的数据文件和目录指定模式,即使由于使用前面的选项本来会包括这些模式
然后说:
通常,现有程序会操纵包的\uuuuu file\uuuu
属性以查找数据文件的位置。但是,此操作与基于PEP 302的导入挂钩(包括从zip文件和Python鸡蛋导入)不兼容。强烈建议,如果您使用的是数据文件,则应使用pkg_resources
的ResourceManager API访问它们
感谢您的信息性回复。package_数据标志是我想知道一段时间的事情。