Python3 模块路径问题彻解

 

 在部署自己python程序时发现一些程序不能运行,解决之后对python path 有了详细了解。因此记录下来,供其它朋友参考 

让你模块可用

  • 将模块放置在正确的位置,可用下面的函数查看“正确的位置”
>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']

注意:将自己的包/模块 放入到这些个目录中,即可用。

  • 告诉编译器去哪里找,貌似这是更加通用的做法
  1. 编辑sys.path: 这是一种临时配置的方式,再次打开python的时候路径掉了。
>>> import flash
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'flash'
>>> sys.path.append('/home/xx/Codes/eclipse/pythonbook/xx/')
>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/home/xx/Codes/eclipse/pythonbook/xx/']
>>> import flash
>>> flash.flashprint('beauty')
Flash Print: beauty
  1. 标准的方法是:编辑PYTHONPATH环境变量,设置方法链接
sudo gedit /etc/environment # Terminal 打开环境变量文件
export PYTHONPATH=$PYTHONPATH:/home/xx/Codes/eclipse/pythonbook/xx/ # 文件中增加PYTHONPATH值
source /etc/environment # Terminal 中使之生效

效果是:

>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/home/xx/Codes/eclipse/pythonbook/xx',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']
>>> flash.flashprint('beauty')
Flash Print: beauty
  1. pth文件
    我的文件树结构如下
├── pythonbook
│   ├── xx
│   │   ├── flash.py
│   └── yy
│       ├── conf.pth
│       └── test.py

conf.pth 内容

/home/xx/Codes/eclipse/pythonbook/xx/

test.py 内容

print('YY is outputting')
import flash
flash.flashprint('beauty')
  • 直接运行test.py报错,可是我明明在pth文件中指明了flash.py的路径呀。尽管当前文件夹('')是python编译器查找的路径,但还是需要将pth文件放到别的编译器能够查找的位置,比如'/usr/lib/python3/dist-packages'。这样直接可以import该模块了(不存在路径问题)。
>>> pprint.pprint(sys.path)
['',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值