我在/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.__file__
。但是Document / pythonpackage的某些数据不在site-packages中,如果您只能访问python中的模块,有没有一种方法可以自动找到/Document/pythonpackage
的路径?
答案 0 :(得分:1)
setup.py
将所有数据文件复制到相关位置,然后您的代码将从那里将它们拾取。
假设您使用的是标准setuptools
,则可以在Including Data Files上看到文档,该文档在底部显示:
总而言之,这三个选项使您可以:
include_package_data
接受MANIFEST.in匹配的所有数据文件和目录。
package_data
指定其他模式以匹配MANIFEST.in或源代码管理中可能不匹配的文件。
exclude_package_data
为安装软件包时不应该包括的数据文件和目录指定模式,即使由于使用上述选项原本会被包括在内也是如此。
然后说:
通常,现有程序会操纵包的
__file__
属性,以查找数据文件的位置。但是,此操作与基于PEP 302的导入挂钩不兼容,包括从zip文件和Python Eggs导入。强烈建议,如果您正在使用数据文件,则应该使用pkg_resources
的ResourceManager API来访问它们
答案 1 :(得分:0)
不确定,但是您可以为模块创建存储库并使用pip进行安装。 egg文件夹中将有一个名为PKG-INFO的文件,其中包含您从中导入模块的存储库的URL。