在我的 python 项目中共享实用程序模块的最佳目录结构策略是什么?由于公共模块将使用新功能进行更新,因此我不想将它们放在 python 安装目录中。
project1/
project2/
sharedUtils/
从project1我不能使用“import ..\sharedUtils”,还有其他方法吗?我宁愿不硬编码“sharedUtils”位置
提前致谢
在我的 python 项目中共享实用程序模块的最佳目录结构策略是什么?由于公共模块将使用新功能进行更新,因此我不想将它们放在 python 安装目录中。
project1/
project2/
sharedUtils/
从project1我不能使用“import ..\sharedUtils”,还有其他方法吗?我宁愿不硬编码“sharedUtils”位置
提前致谢
制作一个单独的独立包?并将其放在 python 安装的 /site-packages 中?
当谈到开发模式时,还有我个人最喜欢的:使用符号链接和/或*.pth
文件。
假设你有sharedUtils/utils_foo
和sharedUtils/utils_bar
。您可以编辑您的 PYTHONPATH 以包含sharedUtils
,然后将它们导入project1
并project2
使用
import utils_foo
import utils_bar
etc.
在 linux 中,您可以这样做编辑 ~/.profile ,如下所示:
PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH
使用 PYTHONPATH 环境变量会影响 python 在查找模块时搜索的目录。由于每个用户都可以设置自己的 PYTHONPATH,因此该解决方案非常适合个人项目。
如果您希望机器上的所有用户都能够导入模块sharedUtils
,那么您可以通过使用.pth
文件来实现。放置.pth
文件的确切位置可能取决于您的 python 发行版。请参阅使用 .pth 文件进行 Python 开发。
目录结构:
project1/foo.py
sharedUtils/bar.py
使用您显示foo.py
的目录,您可以从目录内部project1
添加相对路径,sharedUtils
如下所示:
import sys
sys.path.append("../sharedUtils")
import bar
这避免了对C:/../sharedUtils
路径进行硬编码,并且只要您不更改目录结构就可以工作。