Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从模块中定位源代码路径_Python_Setup.py_Site Packages - Fatal编程技术网

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_数据标志是我想知道一段时间的事情。