0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python包模塊相對導入from和import介紹2

jf_78858299 ? 來源:梯閱線條小梯子 ? 作者:小梯子 ? 2023-02-21 14:17 ? 次閱讀

3.5.3 示例import-python2.7搜索當前包

python2.7先搜索當前包目錄,再搜索sys.path模塊搜索路徑。即先相對再絕對。

本示例在交互模式執(zhí)行,非文件模式執(zhí)行。

E**:**\\documents\\F盤\\ 目錄不存在pkgmoda.py文件

# 打開cmd,執(zhí)行下面命令
E:\\documents\\F盤>d:\\Python27\\python
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.pyc
print(sys.path[0]):
run:E:\\documents\\F盤\\pkg1\\pkgmoda.pyc
print(string):<module 'string' from 'd:\\Python27\\lib\\string.pyc'>
run:E:\\documents\\F盤\\pkg1\\main_moda.pyc
# 先搜索當前包目錄
print(pkgmoda):<module 'pkg1.pkgmoda' from 'pkg1\\pkgmoda.pyc'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.pyc

3.5.4 示例import-python3.7略過當前包

python3.7不搜索當前包目錄,直接搜索sys.path模塊搜索路徑,即絕對導入。

本示例在交互模式執(zhí)行,非文件模式執(zhí)行。

E**:**\\documents\\F盤\\ 目錄不存在pkgmoda.py文件

# 打開cmd,執(zhí)行下面命令
E:\\documents\\F盤>d:\\python3\\python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
# 不搜索當前包目錄
Traceback (most recent call last):
 File "", line 1, in 
 File "E:\\documents\\F盤\\pkg1\\main_moda.py", line 4, in 
   import pkgmoda
ModuleNotFoundError: No module named 'pkgmoda'

3.5.5 示例import-python3.7程序目錄-文件模式

python3.7直接搜索sys.path模塊搜索路徑,即絕對導入。

本示例在文件模式執(zhí)行,非交互模式執(zhí)行。

E**:**\\documents\\F盤\\ 目錄不存在pkgmoda.py文件

# 打開cmd,執(zhí)行下面命令
E:\\documents\\F盤>d:\\python3\\python pkg1\\main_moda.py
# 程序目錄為 pkg1
print(sys.path[0]):E:\\documents\\F盤\\pkg1
run:E:\\documents\\F盤\\pkg1\\pkgmoda.py
print(string):<module 'string' from 'd:\\\\python3\\\\lib\\\\string.py'>
run:E:\\documents\\F盤\\pkg1\\main_moda.py
# 搜索sys.path的程序目錄
print(pkgmoda):<module 'pkgmoda' from 'E:\\\\documents\\\\F盤\\\\pkg1\\\\pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.py

3.5.6 示例import-sys.path

將pkg1\\pkgmoda.py剪切到“E**:**\\documents\\F盤”。

當前包目錄沒有模塊,sys.path的程序目錄有模塊。

python2.7先當前包目錄,在sys.path,

python3.7只sys.path。

本示例在交互模式執(zhí)行,非文件模式執(zhí)行。

# python2.7示例
E:\\documents\\F盤>d:\\Python27\\python
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.pyc
print(sys.path[0]):
run:E:\\documents\\F盤\\pkgmoda.py
print(string):<module 'string' from 'd:\\Python27\\lib\\string.pyc'>
run:E:\\documents\\F盤\\pkg1\\main_moda.py
# 搜索程序目錄
print(pkgmoda):<module 'pkgmoda' from 'pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkgmoda.py
# python3.7示例
E:\\documents\\F盤>d:\\python3\\python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
run:E:\\documents\\F盤\\pkgmoda.py
print(string):<module 'string' from 'd:\\\\python3\\\\lib\\\\string.py'>
run:E:\\documents\\F盤\\pkg1\\main_moda.py
# 搜索程序目錄
print(pkgmoda):<module 'pkgmoda' from 'E:\\\\documents\\\\F盤\\\\pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkgmoda.py

3.5.7 示例from點相對導入

“目錄文件內(nèi)容-1”修改 main_moda.py 為相對導入 from **.**import pkgmoda

# main_moda.py
# coding=utf-8
import sys,os
print('print(sys.path[0]):{}'.format(sys.path[0]))
from . import pkgmoda
print('run:{}'.format(os.path.abspath(__file__)))
print('print(pkgmoda):{}'.format(pkgmoda))
print('pkgmoda.index:{}'.format(pkgmoda.index))

本示例在交互模式執(zhí)行,非文件模式執(zhí)行。

E**:**\\documents\\F盤\\ 目錄不存在pkgmoda.py文件

相對導入from . import module 從當前包搜索。

# python2.7示例
E:\\documents\\F盤>d:\\Python27\\python
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
run:E:\\documents\\F盤\\pkg1\\pkgmoda.py
print(string):<module 'string' from 'd:\\Python27\\lib\\string.pyc'>
run:E:\\documents\\F盤\\pkg1\\main_moda.py
# python2.7 相對導入從當前包搜索
print(pkgmoda):<module 'pkg1.pkgmoda' from 'pkg1\\pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.py

# python3.7示例
E:\\documents\\F盤>d:\\python3\\python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
run:E:\\documents\\F盤\\pkg1\\pkgmoda.py
print(string):<module 'string' from 'd:\\\\python3\\\\lib\\\\string.py'>
run:E:\\documents\\F盤\\pkg1\\main_moda.py
# python3.7 相對導入從當前包搜索
print(pkgmoda):<module 'pkg1.pkgmoda' from 'E:\\\\documents\\\\F盤\\\\pkg1\\\\pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.py

相對導入只搜索當前包路徑,不搜索sys.path路徑。

將pkg1\\pkgmoda.py剪切到“E**:**\\documents\\F盤”

# python2.7示例

E:\\documents\\F盤>d:\\Python27\\python
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
# 只搜索包當前路徑,不搜索sys.path路徑
Traceback (most recent call last):
 File "", line 1, in 
 File "pkg1\\main_moda.py", line 5, in 
   from . import pkgmoda
ImportError: cannot import name pkgmoda
# python3.7示例

E:\\documents\\F盤>d:\\python3\\python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg1.main_moda
run:E:\\documents\\F盤\\pkg1\\__init__.py
print(sys.path[0]):
# 只搜索包當前路徑,不搜索sys.path路徑
Traceback (most recent call last):
 File "", line 1, in 
 File "E:\\documents\\F盤\\pkg1\\main_moda.py", line 5, in 
   from . import pkgmoda
ImportError: cannot import name 'pkgmoda' from 'pkg1' (E:\\documents\\F盤\\pkg1\\__init__.py)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1929

    瀏覽量

    34539
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評論

    相關(guān)推薦

    什么是python、模塊和庫?

    使用 模塊名.變量名 的方式訪問這個變量。>>> import demo導入成功>>> demo.name'Python編程時光'在導入
    發(fā)表于 03-09 16:48

    python花式導的八種方法

    語句導入模塊已經(jīng)夠用的。但是在一些特殊場景中,可能還需要其他的導入方式。下面我會一一地給你介紹。2. 使用 __
    發(fā)表于 03-10 16:51

    python 導入的三個冷門知識點

    1. 使用 __all__ 控制可被導入的變量使用 from module import * 默認情況下會導入 module 里的所有變量,若你只想從
    發(fā)表于 03-14 16:33

    python、模塊和庫是什么

    有一個名為 demo.py 的文件,文件內(nèi)容如下 name="Python編程時光"print("導入成功") 直接使用 import 語句就可以導入,
    的頭像 發(fā)表于 03-09 16:47 ?2286次閱讀

    python花式導的八種方法

    場景中,可能還需要其他的導入方式。 下面我會一一地給你介紹。 2. 使用 __import__ __import__ 函數(shù)可用于
    的頭像 發(fā)表于 03-10 16:48 ?2299次閱讀

    python模塊相對導入fromimport介紹1

    文件**init**.py下,python通過import module導入模塊時,先搜索程序運行主目錄。 程序運行主目錄為運行的
    的頭像 發(fā)表于 02-21 14:15 ?1002次閱讀

    簡述python模塊importfrom及all

    python指定導入目錄路徑,稱為導入。 通過importfrom
    的頭像 發(fā)表于 02-21 14:20 ?1203次閱讀

    淺析python模塊創(chuàng)建和fromimport使用

    python模塊通過用python程序編寫的.py文件即可創(chuàng)建,通過fromimport語句導入
    的頭像 發(fā)表于 02-21 14:44 ?785次閱讀

    import模塊導入方法

    import 語句的基本語法格式如下: import 模塊名 # 導入一個模塊 import
    的頭像 發(fā)表于 09-11 17:31 ?1159次閱讀

    rom…import導入代碼介紹

    rom…import導入 基本語法格式如下: from 模塊import 成員1,成員2,…
    的頭像 發(fā)表于 09-11 17:35 ?897次閱讀

    如何實現(xiàn)__import__()動態(tài)導入

    python2python3中有差異,會導致意外錯誤. 如果需要動態(tài)導入可以使用 importlib 模塊 import importli
    的頭像 發(fā)表于 09-11 17:38 ?1064次閱讀

    Python導入操作和本質(zhì)

    fun_AA 按 照模塊路徑導入指定類or方法 在使用時,直接可以使用函數(shù)名。比如: fun_AA() 注意事項: from package import item 這種語法中, i
    的頭像 發(fā)表于 09-12 17:41 ?861次閱讀

    Python import Hook 實現(xiàn)遠程導入模塊

    所謂的模塊 導入,是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復用。 也許你看到這個標題,會說我怎么會發(fā)這么基礎的文章? 與此相反。恰恰我覺得這篇文章的內(nèi)容可以算是
    的頭像 發(fā)表于 11-02 11:45 ?598次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>import</b> Hook 實現(xiàn)遠程<b class='flag-5'>導入</b><b class='flag-5'>模塊</b>

    python如何導入模塊

    Python是一種強大的編程語言,它支持模塊化編程,使得開發(fā)者可以將代碼分解為可重用且獨立的模塊模塊是一個包含函數(shù)、類和變量等定義的文件,我們可以使用
    的頭像 發(fā)表于 11-22 14:46 ?875次閱讀

    如何用import導入一個

    Python中,import語句用于導入代碼所需的模塊。模塊
    的頭像 發(fā)表于 11-22 14:59 ?1069次閱讀