簡體   English   中英

腳本無法導入已安裝的軟件包,但解釋器可以

[英]Script cannot import installed package, but interpreter can

將Windows 10和Python 3.4.3與Powershell和一個干凈的venv結合使用:

PS C:\Users\nward\MyEnvDirectory .\Scripts\Activate.ps1
(MyScriptVenv) PS C:\Users\nward\MyEnvDirectory pip install Package
[...] Success!

我可以驗證C:\\Users\\nward\\MyEnvDirectory\\Lib\\site-packages\\Package存在並且看起來不錯。

(MyScriptVenv) PS C:\Users\nward\MyEnvDirectory python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Package
>>>

因此,這可行。 但是,如果我嘗試在同一目錄中的.py文件中運行同一行,例如“ import Package”,例如- (MyScriptEnv) PS C:\\Users\\nward\\MyEnvDirectory .\\main.py那么我得到一個ImportError: No module named 'Package'

根據我的閱讀,這通常是由於PATH錯誤,陰影或Python的混合版本所致。 python --version提供Python 3.4.3 ,但我不相信我安裝了任何其他版本。 我不認為這是由於陰影所致,因為我的腳本文件和程序包具有不同的名稱。 因此,這一定是由於PATH問題引起的,但是我不明白它是什么,因為解釋器顯然對PATH沒有任何問題! 這個問題安裝的Python腳本無法導入軟件包模塊,這似乎正是我的問題,但這是由於陰影/目錄結構問題所致。 我還讀到這可能是一個權限問題(例如,較高的解釋器但執行權限較低的shell),但是在這種情況下,權限是可以的。

有人對我接下來應該去哪里有什么建議? 這是一個非常基本的問題,我敢肯定我只是誤解了一些東西,但是我有些困惑。 謝謝!

好像您在虛擬環境中使用-運行開放式python交互式解釋器時

PS C:\Users\nward\MyEnvDirectory python

您正在從virtualenv獲取python安裝,但是當您以以下方式運行腳本時-

.\main.py

它會在virtualenv之外拾取python,因為當您直接運行文件時,Windows會拾取為.py文件注冊的python可執行文件。 您可以嘗試將腳本運行為-

python main.py

從virtualenv內部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM