我有以下文件夹结构
我已将所需的所有库移到lib /文件夹中。
在我的module/__init__.py
中,我想我会这样做:
import sys
sys.path.append('../lib/')
import my_dependency
然后,当我需要使用此依赖项时,我将其称为
my_module.my_dependency
这是Python导入的错误用法吗?
注意:依赖项包含一些第三方库,这些库不是通过pip / easy_install提供的,而是我写的一些C ++内容。
答案 0 :(得分:1)
sys.path.append('../lib/')
假定当前工作目录是脚本的目录,可能是也可能不是。
不依赖于工作目录的版本是:
import sys, os
sys.path.append(os.path.join(os.path.split(os.path.split(os.path.abspath(sys.argv[0]))[0])[0], "lib"))
import my_dependency
上面的普通语言采用脚本的完整路径,删除最后两个组件(脚本目录和脚本文件名)并附加lib
。
答案 1 :(得分:0)
如果您使用的库是第三方模块 - 特别是受欢迎的库 - 命名它们就像它会很快变得不一致。您最终会得到有时被引用为bar
且有时被引用为foo.bar
的代码。保持这样的代码库不值得你期望通过为它们加上前缀获得的任何收益。
如果您将第三方代码保留在自己的存储库中,请考虑将其替换为requirements.txt
文件,该文件可以提供给easy_install
和pip
等实用程序。这两个工具都支持安装到您的主目录的--user
开关(不接触系统内容)。
pip install -r requirements.txt --user