python 指定源路径来解决import问题的操作


Posted in Python onMarch 04, 2021

用python做大型工程时,经常会出现import问题。比如,当你import另一个py文件时,这个py不存在于你的运行路径下,便会报错。

大概有两种方法:

如果在terminal里,咱们可以通过sys.path.append来添加运行路径;如果在pycharm环境里,咱们可以右键Mark Directory as Sources Root。

举个栗子:vim head.py

def add(a, b):
 return a + b

vim run.py

import head
a = 3
b = 4
c = head.add(a, b)
print(c)

咱们把head.py和run.py放在一个路径下,文件结构如下:

my_path
├── head.py
└── run.py

咱们运行run.py:

cd my_path
python run.py

直接成功运行没有毛病。但是,如果路径关系再复杂点呢?比如

my_path
├── folder_a
│ └── run.py
└── folder_b
└── head.py

如果cd my_path/folder_a,然后python run.py。肯定会报路径错误。这个时候,如果你是用pycharm开发这个工程,你可以直接

python 指定源路径来解决import问题的操作

倒数第三行,mark directory as source root。直接把folder_b设置为一个源根目录,这样folder_b下的文件都可以直接不加前缀地被import。

如果你是在terminal运行,没办法像pycharm那么设计,或者需要从pycharm部署到terminal时,你可以用sys.path.append()来添加源路径。

咱们只需要添加两句:

import sys
sys.path.append('../folder_b')
import head
a = 3
b = 4
c = head.add(a, b)
print(c)

只需要开头加两行就可以完成源路径的指定,源路径下的所有py都可以被不加前缀直接import。你学废了吗

补充:Python国内镜像源路径和设置方法

最近学习Python需要安装第三方的库,基本是国外网站,安装缓慢,于是找到了解决方法,记录下来:使用Python国内镜像源路径,可以快速安装。

国内源路径汇总:

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

使用案例:

例如:pip3 install -i https://pypi.doubanio.com/simple/ 包名

临时使用方式:

可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple

例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5,这样就会从清华这边的镜像去安装pyqt5库。

永久修改使用方式:

Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)

内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

windows下,直接在user目录中创建一个pip目录,再新建文件pip.ini。(例如:C:\Users\WQP\pip\pip.ini)内容同上。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python中sort和sorted函数代码解析
Jan 25 Python
python list元素为tuple时的排序方法
Apr 18 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
python实现学员管理系统
Feb 26 Python
python中eval与int的区别浅析
Aug 11 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python实现简单坦克大战
Mar 27 Python
python+requests接口自动化框架的实现
Aug 31 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
python源文件的字符编码知识点详解
Mar 04 #Python
python3判断IP地址的方法
Mar 04 #Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 #Python
python和opencv构建运动检测器的实现
Mar 03 #Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 #Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 #Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 #Python
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python实现数组插入新元素的方法
2015/05/22 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python远程邮件控制电脑升级版
2019/05/23 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
化妆品促销方案
2014/02/24 职场文书
个人授权委托书范本
2014/04/03 职场文书
领导干部对照检查材料
2014/08/24 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
庐山导游词
2015/02/03 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs