我正在像这样点子安装我的模块:
cd my_working_dir
pip install -e .
Run Code Online (Sandbox Code Playgroud)
当我以后从Python导入模块时,是否可以某种方式检测模块是否以这种可编辑模式安装?
现在,我只是检查是否有一个.git文件夹os.path.dirname(mymodule.__file__)),只有在其中确实有一个.git文件夹时,它才起作用。有没有更可靠的方法?
我不知道有什么方法可以直接检测到这一点(例如询问setuptools)。
您可以尝试检测是否无法通过中的路径到达您的包sys.path。但这很乏味。它也不是防弹的——如果可以通过 sys.path 访问它但它也作为可编辑包安装怎么办?
最好的选择是查看可编辑安装在site-packages文件夹中留下的工件。my_package.egg-link那里有一个文件叫
from pathlib import Path
# get site packages folder through some other magic
# assuming this current file is located in the root of your package
current_package_root = str(Path(__file__).parent.parent)
installed_as_editable = False
egg_link_file = Path(site_packages_folder) / "my_package.egg-link"
try:
linked_folder = egg_link_file.read_text()
installed_as_editable = current_package_root in linked_folder
except FileNotFoundError:
installed_as_editable = False
Run Code Online (Sandbox Code Playgroud)
注意:为了使其更加防弹,请仅读取文件的第一行egg-link并使用它Path()来解析它以考虑正确的斜杠等。
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |