如何导入安装在主目录中的模块?

How to import module installed in home directory?

我在我的主目录中安装了 Python3.4.3,所以它在 /home/jdoe/.local/bin/python3 下,我通过执行 pip install --user package_name pip 安装了一些外部模块。但是现在在编写我的 python 脚本时找不到 python 寻找的包,因为它正在寻找 usr/lib 但包不在那里。如何导入模块以便 python 查看安装在我的个人主目录中的站点包?

将路径附加到您的路径变量

import sys
sys.path.append("<path>")

但是你确定你的pip install --user实际上安装了一个python3.4包,通常不需要在pip安装包的路径中添加任何路径?

pip --version

的输出是什么

this tutorial 中所述,基本上有 2 个选项:使用 PYTHONPATHsys.append

PYTHONPATH 是一个环境变量,用于扩展 Python 搜索模块的目录。可以在命令行前设置 运行 python:

$ export PYTHONPATH=$PYTHONPATH:<Path to Module>
$ python

或在 bash 配置文件中添加 export PYTHONPATH=$PYTHONPATH:<Path to Module> 行(即 .bashrc)。如果在 .bashrc 中设置,则计算机中执行的所有 python 脚本都会在那里搜索模块。

sys.append 从 Python 中调用。它可以添加到调用模块的文件的开头,或者使用以下行从 Python 解释器调用:

import sys
sys.path.append('<Path to Module>')

假设我有一个属于 $HOME/repo/code/sample.py 的脚本,我想将其导入 $HOME/repo2/code/sample.py,一种方法是:

import os 
import sys 
env=os.path.expanduser(os.path.expandvars($HOME/repo) # "source" directory with python script
sys.path.insert(0, env)
import code.sample 

这将删除对 export PYTHONPATH 的依赖,并允许您在 files/folders 之间轻松导入,就好像它们是任何其他模块一样。