Python 脚本无法导入已安装的包,但解释器可以
使用Windows 10、Python 3.4.3、Powershell和干净的venv:Python 脚本无法导入已安装的包,但解释器可以,python,python-3.x,python-import,Python,Python 3.x,Python Import,使用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是否存在
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
-然后我得到一个导入错误:没有名为“Package”的模块
根据我所读到的,这通常是由于路径错误、阴影或混合版本的Python造成的python--version
提供了python3.4.3
,我相信我没有安装任何其他版本。我不认为这是由于阴影,因为我的脚本文件和包有不同的名称。所以这一定是因为路径问题,但我不明白它是什么,因为解释器显然没有路径问题!这个问题似乎正是我的问题,但它是由于阴影/目录结构问题。我还了解到这可能是一个权限问题(例如一个提升的解释器,但是一个低权限的执行shell),但是在这种情况下权限是可以的
有人对我下一步应该去哪里有什么建议吗?这是一个非常基本的问题,我肯定我只是误解了一些东西,但我有点困惑。谢谢 看起来就像在虚拟环境中使用-
PS C:\Users\nward\MyEnvDirectory python
您正在从virtualenv获得python安装,但是当您以-
.\main.py
python main.py
它在virtualenv之外拾取python,因为当您直接运行该文件时,windows拾取为.py
文件注册的python可执行文件。您可以尝试按以下方式运行脚本:-
.\main.py
python main.py
从virtualenv内部。导入系统时会得到什么;在加载失败的脚本中打印(sys.path)。您可能需要在
PYTHONPATH
中添加“包”的位置。我不确定你是如何在Windows中做到这一点的,但要找到它应该不会太难。希望这会有所帮助。环境变量会在运行Python的不同位置产生不同的路径,因此可能存在差异<代码>按Anand的建议打印系统路径,然后查看结果。解释器和脚本之间的结果确实不同。为什么会这样?我如何才能使脚本的执行环境与解释器相同?我本以为在激活的VENV中运行它会成功。。。