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

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

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

python包模塊相對(duì)導(dǎo)入from和import介紹2

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

3.5.3 示例import-python2.7搜索當(dāng)前包

python2.7先搜索當(dāng)前包目錄,再搜索sys.path模塊搜索路徑。即先相對(duì)再絕對(duì)。

本示例在交互模式執(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
# 先搜索當(dāng)前包目錄
print(pkgmoda):<module 'pkg1.pkgmoda' from 'pkg1\\pkgmoda.pyc'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.pyc

3.5.4 示例import-python3.7略過當(dāng)前包

python3.7不搜索當(dāng)前包目錄,直接搜索sys.path模塊搜索路徑,即絕對(duì)導(dǎo)入。

本示例在交互模式執(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]):
# 不搜索當(dāng)前包目錄
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模塊搜索路徑,即絕對(duì)導(dǎo)入。

本示例在文件模式執(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盤”。

當(dāng)前包目錄沒有模塊,sys.path的程序目錄有模塊。

python2.7先當(dāng)前包目錄,在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點(diǎn)相對(duì)導(dǎo)入

“目錄文件內(nèi)容-1”修改 main_moda.py 為相對(duì)導(dǎo)入 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文件

相對(duì)導(dǎo)入from . import module 從當(dāng)前包搜索。

# 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 相對(duì)導(dǎo)入從當(dāng)前包搜索
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 相對(duì)導(dǎo)入從當(dāng)前包搜索
print(pkgmoda):<module 'pkg1.pkgmoda' from 'E:\\\\documents\\\\F盤\\\\pkg1\\\\pkgmoda.py'>
pkgmoda.index:E:\\documents\\F盤\\pkg1\\pkgmoda.py

相對(duì)導(dǎo)入只搜索當(dāng)前包路徑,不搜索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]):
# 只搜索包當(dāng)前路徑,不搜索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]):
# 只搜索包當(dāng)前路徑,不搜索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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1919

    瀏覽量

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

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68078
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84284
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是python、模塊和庫?

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

    python花式導(dǎo)的八種方法

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

    python 導(dǎo)入的三個(gè)冷門知識(shí)點(diǎn)

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

    python、模塊和庫是什么

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

    python花式導(dǎo)的八種方法

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

    python模塊相對(duì)導(dǎo)入fromimport介紹1

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

    簡述python模塊importfrom及all

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

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

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

    import模塊導(dǎo)入方法

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

    rom…import導(dǎo)入代碼介紹

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

    如何實(shí)現(xiàn)__import__()動(dòng)態(tài)導(dǎo)入

    python2python3中有差異,會(huì)導(dǎo)致意外錯(cuò)誤. 如果需要?jiǎng)討B(tài)導(dǎo)入可以使用 importlib 模塊 import importli
    的頭像 發(fā)表于 09-11 17:38 ?1023次閱讀

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

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

    Python import Hook 實(shí)現(xiàn)遠(yuǎn)程導(dǎo)入模塊

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

    python如何導(dǎo)入模塊

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

    如何用import導(dǎo)入一個(gè)

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