gpt4 book ai didi

python - 如何在不安装的情况下使用打包的Python包

转载 作者:行者123 更新时间:2023-12-01 02:10:10 26 4
gpt4 key购买 nike

我有一个具有以下结构的 python 3 包:

.
├── package
│ └── bin
└── main_module
│ └── lib
│ ├── __init__.py
│ ├── module1.py
│ ├── module2.py
│ └── module3.py
│ └── test
│ ├── test1.py
│ ├── test2.py
│ └── test3.py
│ └── setup.py

通常,运行 $ python3 setup.py install 一切都很好。但是,我想在集群服务器上使用这个包,但我没有 /usr/lib/ 的写入权限。我想到了以下解决方案。

  1. 以某种方式将软件包安装在我的用户文件夹中。

  2. 修改软件包,使其无需安装即可运行。

  3. 请 IT 人员帮我安装该软件包。

我想避免 3.,所以我的问题是 1. 是否可能,如果不可能,我必须如何修改代码(特别是导入)以便能够在不安装的情况下使用该包。我整个早上都在阅读有关 python 中的相对导入的内容,现在我比以前更困惑了。我将 __init__.py 添加到 package 和 bin 中,从我读到的内容来看,我认为它必须是 from package.lib import module1,但我总是得到 ImportError:没有名为 lib 的模块

最佳答案

为了让 Python 能够找到您的模块,您需要将包的路径添加到 sys.path 列表中。作为一般方法,您可以使用以下代码片段:

from sys import path as syspath
from os import path as ospath

syspath.append(ospath.join(ospath.expanduser("~"), 'package_path_from_home'))

os.path.expanduser("~") 将为您提供主目录的路径,您可以使用 os.path.join< 将其与包的路径连接起来 然后将最终路径附加到 sys.path

如果package位于主目录中,您只需在要使用此包的Python代码的开头添加以下内容即可:

syspath.append(ospath.join(ospath.expanduser("~"), 'package'))

还要确保您的所有模块中都有 __init__.py

关于python - 如何在不安装的情况下使用打包的Python包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com