为什么只有管理员权限才能导入 Python 中的某些模块?
Why can I import certain modules in Python only with administrator rights?
我在 Python 2.7 中遇到一些奇怪的问题。我写了一个很长的工具,我在其中导入了不同的模块,我必须首先使用 pip 安装这些模块。该工具将在公司内部共享,不同的用户在他们的特定机器上拥有不同的权限。
当另一个用户登录到我的机器(我在那里拥有管理员权限)并尝试使用该工具时,就会出现问题。他无法 运行 它,因为他的身份是 "non-admin",因此无法导入特定模块。
错误消息只是"No module named XY"。
当我们查看文件系统时,我们发现我们无法查看安装模块的文件夹,仅仅是因为系统拒绝了访问。
我们在尝试 运行 pip 来自 cmd 时也收到此错误消息;它打印 "Access denied" 并且不会做任何事情。
为什么有些模块可以被任何人访问,而有些模块不能?我该如何解决这个问题?
具体来说,我说的是 sqlalchemy 和 pyodbc。
非常感谢。
编辑 1:哦,我们在这里谈论的是 Windows,而不是 Linux...
编辑 2:根据公司政策,无法为所有用户设置管理员权限。我按照建议尝试了,但是没有用,我了解到这在公司内是不可能的。
一个简单的解决方案是根据所有人的使用权限设置站点包目录(安装包 gt 的地方),即目录上所有人的读取和执行权限:
sudo chmod -Rv ugo+rX /usr/lib/python2.7/site-packages/
同样适用于 lib64
软件包 - site-packages
的路径可能因各种 Linux 发行版而异。
编辑 1:对于 windows,请查看此“File and Folder Permissions”以设置所有文件或文件夹的读取和执行权限(即站点包)
路径应该是 - C:\Python27\Lib\site-packages
编辑 2:在以下方面:
EDIT 2: Due to company policy it is not possible to set administrator
permissions to all users. I tried, as suggested, but it didn't work
and I learned that it's not possible within the company.
如果是这样,只需使用 pip
:
为特定用户安装 sqlalchemy(或任何其他包)
pip install --user {module_name}
您应该如前所述使用 virtualenv 或为 site-packages
文件夹设置适当的权限。我应该在 C:\Python27\Lib
.
知道了...
按照 Nabeel Ahmed 的建议,我首先从我的管理员帐户中卸载了导致问题的软件包。然后我将脚本更改为
pip install --user {module_name}
瞧...它现在适用于所有用户。
非常感谢你们的帮助,伙计们!
我在 Python 2.7 中遇到一些奇怪的问题。我写了一个很长的工具,我在其中导入了不同的模块,我必须首先使用 pip 安装这些模块。该工具将在公司内部共享,不同的用户在他们的特定机器上拥有不同的权限。 当另一个用户登录到我的机器(我在那里拥有管理员权限)并尝试使用该工具时,就会出现问题。他无法 运行 它,因为他的身份是 "non-admin",因此无法导入特定模块。
错误消息只是"No module named XY"。 当我们查看文件系统时,我们发现我们无法查看安装模块的文件夹,仅仅是因为系统拒绝了访问。 我们在尝试 运行 pip 来自 cmd 时也收到此错误消息;它打印 "Access denied" 并且不会做任何事情。
为什么有些模块可以被任何人访问,而有些模块不能?我该如何解决这个问题?
具体来说,我说的是 sqlalchemy 和 pyodbc。
非常感谢。
编辑 1:哦,我们在这里谈论的是 Windows,而不是 Linux...
编辑 2:根据公司政策,无法为所有用户设置管理员权限。我按照建议尝试了,但是没有用,我了解到这在公司内是不可能的。
一个简单的解决方案是根据所有人的使用权限设置站点包目录(安装包 gt 的地方),即目录上所有人的读取和执行权限:
sudo chmod -Rv ugo+rX /usr/lib/python2.7/site-packages/
同样适用于 lib64
软件包 - site-packages
的路径可能因各种 Linux 发行版而异。
编辑 1:对于 windows,请查看此“File and Folder Permissions”以设置所有文件或文件夹的读取和执行权限(即站点包)
路径应该是 - C:\Python27\Lib\site-packages
编辑 2:在以下方面:
EDIT 2: Due to company policy it is not possible to set administrator permissions to all users. I tried, as suggested, but it didn't work and I learned that it's not possible within the company.
如果是这样,只需使用 pip
:
pip install --user {module_name}
您应该如前所述使用 virtualenv 或为 site-packages
文件夹设置适当的权限。我应该在 C:\Python27\Lib
.
知道了...
按照 Nabeel Ahmed 的建议,我首先从我的管理员帐户中卸载了导致问题的软件包。然后我将脚本更改为
pip install --user {module_name}
瞧...它现在适用于所有用户。
非常感谢你们的帮助,伙计们!