使用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
>>>
所以,这很有效。但是,如果我尝试运行同一行,例如" import Package"来自同一目录中的.py文件,如下所示 -
(MyScriptEnv) PS C:\Users\nward\MyEnvDirectory .\main.py
- 然后我得到ImportError: No module named 'Package'
。
根据我读过的内容,这通常是由于PATH错误,阴影或混合版本的Python造成的。 python --version
提供Python 3.4.3
,我不相信我安装了其他任何版本。我不认为这是由于阴影,因为我的脚本文件和包有不同的名称。所以它必须是由于PATH问题,但我不明白它是什么,因为解释器显然没有PATH的问题!这个问题Installed Python script cannot import package modules似乎正是我的问题,但这是由于阴影/目录结构问题。我还读到这可能是一个权限问题(例如提升的解释器,但是执行权限较低的执行shell),但在这种情况下的权限是正常的。
任何人对我接下来要去哪儿都有任何建议?这是一个非常基本的问题,我确定我只是误解了一些事情,但我有点难过。谢谢!
答案 0 :(得分:1)
似乎在使用 -
在虚拟环境中运行open python交互式解释器时PS C:\Users\nward\MyEnvDirectory python
您正在从virtualenv获取python安装,但当您以 -
运行脚本时.\main.py
它正在virtualenv之外拾取python,因为当你直接运行该文件时,windows会选择为.py
文件注册的python可执行文件。您可以尝试将脚本作为 -
python main.py
来自virtualenv。