【Linux】在Linux中Python模块导入与添加当前工作目录到默认搜索路径

问题来源:

用惯了Pycharm的人,在其他IDE中运行比较复杂的python项目,特别是有许多自己写的类,模块导入往往会出现问题:

- Project- 	A- a.py- B- b.py
比如,在项目Project中,有A,B两个文件夹,a.py和b.py分别是它们的子文件,若b.py需要导入a.py中的某个模块m:

from A.a import m

直接运行b.py,报错
在这里插入图片描述
原因在于,系统不知道工程的根目录所在,而且我们不可能每次都使用cd跳转到a.py文件所在的文件夹

解决方案

  • 方案1:声明工程的根目录,将根目录添加到环境变量

    export PYTHONPATH=/home/bin/module:$“工程根目录路径”
    
  • 方案2:添加当前工作目录到默认模块搜索路径

workon                    # 虚拟环境
python3                   # 进入python编辑器  

# 找到python的sitepackages路径
improt site
site.getsitepackages()

在这里插入图片描述
在site-packaegs添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称,然后保存退出就好了

# 新建mypkpath.pth
vim "site-packages的路径/mypkpath.pth"

# 输入当前工作目录, 保存退出
/root/py

重新进入python编译器,查看当前搜索路径,发现多了/root/py

workon                    # 虚拟环境
python3                   # 进入python编辑器  

# 查看当前搜索路径
improt sys
sys.path

在这里插入图片描述

windows中添加方式,可参照:

Windows中Python模块导入与添加当前工作目录到默认搜索路径

Linux中,如果你安装了Python库但import时找不到,可能是由于Python搜索路径(sys.path)没有包含到库所在的目录。以下是解决这个问题的步骤: 1. **检查已安装位置**: - 打开终端并运行 `python -c "import site; print(site.getsitepackages())"`,这将显示Python默认搜索路径。 2. **手动添加路径**: - 如果库位于自定义的位置,你可以通过编辑`~/.bashrc`、`~/.bash_profile` 或者`~/.zshrc`(取决于你的shell)文件,在其中添加一条类似这样的行: ``` export PYTHONPATH=$PYTHONPATH:/path/to/your/library ``` 然后运行 `source ~/.bashrc` (or对应文件) 使更改生效。 3. **全局设置**: - 如果你想让所有用户都能访问这个库,可以在系统级别的配置文件(如 `/etc/profile.d/python.sh`)中添加路径,然后重启shell或运行 `sudo update-alternatives --config python` 来应用新设置。 4. **包管理器**: - 如果库是通过包管理器(如pip、apt-get等)安装的,确保该路径已经包含在`pip`或`distutils`的搜索路径中。比如,对于pip,可以使用 `pip config set global.index-url https://pypi.org/simple/ && pip install --upgrade pip` 更新pip,并确保`site-packages`目录在`pip.conf`或`pipx.ini`的`global.index-url`中指定。 5. **模块路径查找**: - 检查`sitecustomize.py` 文件,有时候某些库会在这里自动修改`sys.path`。 如果以上步骤仍然无法解决问题,确认库是否安装成功以及是否有权限访问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值