python無法導入(python無法導入自己寫的模塊)

  • 1、如何解決python不能導入同目錄py文件
  • 2、python導入py文件報錯怎麼辦
  • 3、python不能導入模塊怎麼解決
  • 4、python模塊安裝完成,但是在pycharm裡面卻導入失敗
  • 5、請問為什麼python3.7.3import導入模塊不成功
  • 6、Python的錯誤導入已經安裝模塊問題,怎麼解決

解決python不能導入同目錄py文件的方法:

先查看需要導入的py文件名是否含有空格以及中文字元,如果有就刪掉空格換成英文的字元

然後用「import 文件名」的方式導入py文件就可以了

更多Python知識,請關註:Python自學網!!

在預設狀態下,導入一個已編寫好的py文件用import 跟上py文件名,很簡單。但有時系統會出現SyntaxError: invalid syntax的錯誤,如下圖所示

這種情況一般是由於查找目錄不包含,類似於linux下的執行路徑概念,可以列印sys.path來確認, 如下圖

如果編寫的py文件不在上述目錄清單中,就可以字元串的append方法,將目錄加入到上述目錄清單之後。

寫入目錄後,再執行import上面寫的py就可以成功了,如下圖,i,mport ex25後沒有報錯

另外一種無法導入如下圖,提示的錯與第一個情況不一樣,提示SyntaxError: invalid syntax錯誤

這種情況下其實不是找不到py文件,而是py文件的命名違反了規範,不能使用全數字的命名,必須需要有字母,改名後就可以導入了。

模塊是指一個可以交互使用,或者從另一Python 程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。

模塊可以通過這種方法來使用其它模塊的功能。

用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 funcname,而應該使用 modname.funcname!

參考

github

將Inherit global site-packages這個選項勾選,應該可以解決大部分的問題了吧!

對於上面的問題,是python的虛擬環境引起的問題,如果安裝了module,需要對虛擬環境進行配置,之後就可以進行使用了,不配置的話就需要點擊Inherit global site-packages,或者existing interperter,這樣就默認不適用虛擬環境,然後選擇一個解釋器即可。

選擇「Create New Project」來創建新項目就會打一個創建項目的嚮導頁。

在如上圖所示的界面中,我們可以選擇創建項目的模板,包括了純Python項目、基於各種不同框架的Web項目、Web前端項目、跨平台項目等各種不同的項目模板。如果選擇Python的項目,那麼有一個非常重要的設定是選擇「New environment…」(創建新的虛擬環境)還是使用「Existing Interpreter」(已經存在的解釋器)。前者肯定是更好的選擇,因為新的虛擬環境不會對系統環境變數中配置的Python環境造成影響,簡單舉個例子就是你在虛擬環境下安裝或者更新了任何三方庫,它並不會對系統原有的Python解釋器造成任何的影響,但代價是需要額外的存儲空間來建立這個虛擬環境。

最後發現是anaconda安裝以後,interpreter沒有設置成anaconda導致的

參考

;utm_source=distribute.pc_relevant.none-task

生信處理基因序列–未完待續

1、主要你是要當前使用的環境中是否已經安裝了對應的模塊。

2、檢查當前使用的環境是否為虛擬環境的,如果為虛擬環境,則之前在python路徑下安裝的模塊應該是不能使用的,所有還需要重新在虛擬環境中安裝對應的模塊。

3、在你展現的程序中呈現的是語法錯誤,然而並非是模塊導入錯誤,所以好好檢查你的程序出錯的地方。

當遇到無法導入某個python模塊時,可能會是沒有安裝某個模塊,也有可能是某模塊在載入過程中失敗,也有可能是陷入了循環導入的問題。本文詳細解釋了這個問題。

1. 模塊未安裝或者路徑不對

ImportError: No mudule named myModule

有兩種可能,一是該模塊沒有安裝,一般可以用

pip install %module_name%

來解決。注意有時候模塊安裝包名並不等於要導入的模塊名。這種情況下可以通過pip search | list命令來嘗試找到正確的包。

另一種情況就是包雖然安裝了,但當前運行的程序載入的路徑有錯。python運行時將從以下位置嘗試載入python modules:

* 當前目錄

* 環境變數$PYTHONPATH所指示的值,這是一個由「:」分隔的字元串,各個子字元串都是文件系統的一個路徑。

* 標準庫目錄,如dist-site-packages下的模塊。

* 在.pth文件中指定的路徑,如果存在.pth文件的話。

可以使用以下方式來查看python運行時的包含路徑:

?

12

import sysprint(sys.path)

在運行出錯的腳本裝頭部加上這一段代碼,然後在控制台中查看列印出來的python類庫路徑,檢查安裝包是否已包含在上述路徑中。

***可以通過下面的方式將未包含在路徑中的模塊臨時包含進來:***

sys.path.append(“path/to/module”)

另外,還可以在shell窗口中查看當前的python包含路徑:

echo $PYTHONPATH

2. 無法導入已存在的模塊

如果要導入的模塊包含了native代碼,並且native代碼載入(初始化)失敗時,就會導致這種錯誤。使用ssl,

gevent等涉及native的模塊時,如果對應的native程序並未安裝,則會出現這樣的錯誤。

另一種錯誤情況是,使用相對路徑導入時,父模塊還未導入成功。見下面的代碼:

?

12345

main.pymypackage/ __init__.pymymodule.pymyothermodule.py

mymodule.py如下所示:

?

123456789101112

#!/usr/bin/env python3 # Exported functiondef as_int(a): return int(a) # Test function for module def _test(): assert as_int(‘1’) == 1 if __name__ == ‘__main__’: _test()

以及myothermodule代碼如下所示:

?

1234567891011121314

#!/usr/bin/env python3 from .mymodule import as_int # Exported functiondef add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add(‘1’, ‘1’) == 2 if __name__ == ‘__main__’: _test()

如果執行mypackage/myothermodule,則會報以下錯誤:

Traceback (most recent call last):

File “myothermodule.py”, line 3, in

module

from .mymodule import as_int

SystemError: Parent module

” not loaded, cannot perform relative import

[這篇文章](#Relative imports in

Python 3)給出了更詳細的解答。

3. 循環導入

這種錯誤稱之為”circular (or cyclic) imports”。是python獨有的一種導入錯誤,在象java這樣的語言中就不存在。

假設有如下兩個文件,a.py和b.py:

?

1234567

#a.pyprint “a in”import sysprint “b imported: %s” % (“b” in sys.modules, )import bprint “a out”print b.x

以及:

?

12345

#b.pyprint “b in”import aprint “b out”x = 3

執行python a.py,將得到以下結果:

?

123456789101112131415

$ python a.pya in b imported: Falseb ina inb imported: Truea outTraceback (most recent call last): File “a.py”, line 4, in module import b File “/home/shlomme/tmp/x/b.py”, line 2, in module import aFile “/home/shlomme/tmp/x/a.py”, line 7, in module print b.xAttributeError: ‘module’ object has no attribute ‘x’

出現這種情況的原因是產生了循環導入。循環導入,以及在導入過程中python進行了加鎖操作,最終導致在模塊b未導入完成時就引用了其中的名字。

判斷導入錯誤是否是因為循環導入引起的,主要看堆棧中是否出現兩次重複的導入。比如上述堆棧中a.py出現兩次,因此可以判斷是這個文件引起的循環導入。

要解決這個問題,可以把模塊看成一種資源,對所有要引入的模塊進行編號,再按靜態資源排序法順次導入,就可以避免循環導入。

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126778.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論