包及跨模块导入

1.pip命令默认在国外的python服务器上下载,速度会很慢。可以使用国内的豆瓣源,速度会快很多。(simple后面的斜杠/后要空一格然后输入下载的模块名,否则会像上面那样报错,下载速度惊人)

 

2.包

有时候一个功能的实现需要多个模块来维持。这样很容易会弄乱,所以就把实现一个小功能的模块放在一个包里(package)。一个包里面有多个py文件,也就是有多个模块。没有__init__的叫目录,包下面都会有__init__这个py文件。

__init__作用就是把目录初始化成一个包。

python2里不加__init__导入模块会报错,因为他会认为那是一个目录,不是包。而python3不会报错,不论有没有__init__.

 

3.跨模块导入

注意下manage·py的位置,要和包在同一级才能导入包下面的模块。

 

sys.path 里面第一个空位是入口程序所在的路径(sys.path 环境变量)。

import sys

print(sys.path)

sys.path.insert(0,r"C:\Users\LENOVO\PycharmProjects\untitled2\lianxi")

print(sys.path)

from my_module import cro

cro.croe()

注意:路径截至的地方是lianxi,不是my_module,因为如果是my_module,就会直接到my_module里面去找,就不用from my_module,直接import cro。  

 

 

4.windows插入路径时路径前面不加r会报错,如下

 

5.

os.path.dirname回退到上一级目录。可以多次使用。

适用于所有的系统跨模块导入。

import sys,os
print(__file__)

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(BASE_DIR)

sys.path.append(BASE_DIR)

from my_module import cro

cro.croe()

  

import sys,os
print(__file__)

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
print(BASE_DIR)


# C:/Users/LENOVO/PycharmProjects/untitled2/lianxi/module/fun.py
# C:/Users/LENOVO/PycharmProjects/untitled2/lianxi/module/fun.py
# C:/Users/LENOVO/PycharmProjects/untitled2

  

 绝对路径(os.path.abspath(__file__)) 

先取得绝对路径

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

  

转载于:https://www.cnblogs.com/Roc-Atlantis/p/8697691.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值