无法导入模块 - 为什么sys.path找不到PYTHONPATH?

时间:2017-11-16 16:47:40

标签: python windows python-import

我在Windows 7计算机上运行Python 3.6.1。我在H:\Myname\Python\myscripts中有一些脚本。

我创建了用户变量PYTHONPATH并将其设置为上面的文件夹。我没有管理员权限,所以我只能创建一个用户变量。

在该文件夹中,我有一个带有一些函数的myscripts.py文件。

如果我尝试从存储在其他位置的文件中运行import myscripts来访问它,那么它就不起作用:我得到ModuleNotFoundError

如果我打印sys.path,我在PYTHONPATH中设置的文件夹不存在。

为什么呢?我究竟做错了什么?是不是sys.path应该显示PYTHONPATH? H是网络驱动器的事实与它有什么关系吗?

我似乎无法在网上找到与Windows相关的任何问题(但对于Unix系统很多)。

2 个答案:

答案 0 :(得分:1)

快速解决这个问题的常用方法是使用
sys.path.append("path/to/module")
如果您使用的是Windows,请注意'\\'

不完全回答你的问题,但这可以解决问题。

答案 1 :(得分:0)

很可能存在一个._pth文件,它覆盖了sys.path的默认行为。删除或重命名python._pth(或python36._pth)文件。

我下载的Windows embedded zip file中包含一个python37._pth文件,导致sys.path不包含PYTHONPATH

  

要完全覆盖sys.path,请使用相同的文件创建一个._pth文件。   名称为DLL(python37._pth)或可执行文件(python._pth),并   为每个路径指定一行以添加到sys.path。该文件基于   DLL名称会覆盖基于可执行文件的名称,从而允许   必要时,限制任何程序加载运行时的路径。

     

文件存在时,所有注册表和环境变量均为   忽略,启用隔离模式,并且除非一个站点不导入   文件中的一行指定导入站点。

Using Python on Windows - Finding Modules