zoukankan      html  css  js  c++  java
  • 包及跨模块导入

    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:UsersLENOVOPycharmProjectsuntitled2lianxi")
    
    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__)))
    

      

  • 相关阅读:
    AE(ArcGIS Engine)的安装与配置(附加ArcGIS安装及所需安装包)
    C# 封装
    如何修改C# winform程序图标
    C#中ESRI.ArcGIS.esriSystem的引用问题
    c#窗体进度条
    【转】C#路径中获取文件全路径、目录、扩展名、文件名称
    【转】C# Application.DoEvent()的作用
    如何在Word中批量选中特定文本
    GIT
    git使用
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8697691.html
Copyright © 2011-2022 走看看