2

我在 Windows 7 上(我完全承认我不了解它的权限模型。我正在其他选项卡中阅读它。)我的用户是管理员。当我尝试运行“python Distribute_setup.py”时,出现“写入失败...权限被拒绝”错误,然后出现“错误:无法在安装目录中创建或删除文件”。

我刚刚从 python.org 安装了 Python 3.2.2 MSI 安装程序。

即使我在 64 位 Windows 上,我也在安装 32 位 Python,因为我会有一些需要它的依赖项(pyglet,一个OpenGL库。)

我下载了distribute_setup.py 并从命令行运行“pythondistribute_setup.py”。

在这喷出的大量无用文本的中途是一些隐藏的错误消息:

root: Generating grammar tables from E:\Program Files (x86)\Python3.2.2\Lib\lib2to3\PatternGrammar.txt
root: Writing grammar tables to E:\Program Files (x86)\Python3.2.2\Lib\lib2to3\PatternGrammar3.2.2.final.0.pickle
root: Writing failed:[Errno 13] Permission denied: 'E:\\Program Files (x86)\\Python3.2.2\\Lib\\lib2to3\\PatternGrammar3.2.2.final.0.pickle'

这三行重复了大约二十次,然后:

Scanning installed packages
No setuptools distribution found
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

    [Errno 13] Permission denied: 'E:\\Program Files (x86)\\Python3.2.2\\Lib\\site-packages\\test-easy-install-5924.write-test'

目录“E:\Program Files (x86)\Python3.2.2\Lib”允许管理员“完全控制”。我的用户是管理员(并且选中的权限复选框都是灰色的——即使我想关闭,我也无法关闭“完全控制”或任何其他权限。)

我推测性地尝试将“完全控制”添加到“用户”组以及“管理员”组。重新运行,我不再收到相同的错误,但它在同一点退出,并带有:

Scanning installed packages
No setuptools distribution found
build\src\setuptools\command\easy_install.py:289: UserWarning: Unbuilt egg for distribute [unknown version] (c:\users\jhartley\appdata\local\temp\tmpr0dzkz\distribute-0.6.24\build\src)
  self.local_index = Environment(self.shadow_path+sys.path)
warning: no files found matching 'Makefile' under directory 'docs'
warning: no files found matching 'indexsidebar.html' under directory 'docs'
error: E:\Program Files (x86)\Python3.2.2\Scripts: Access is denied

没有“E:\Program Files (x86)\Python3.2.2\Scripts”目录。我创建一个。它归“管理员”所有,并为管理员设置了“完全控制”。我注意到所有其他 Python 文件和目录都归“SYSTEM”所有。再次运行给出:

Scanning installed packages
No setuptools distribution found
build\src\setuptools\command\easy_install.py:289: UserWarning: Unbuilt egg for distribute [unknown version] (c:\users\jhartley\appdata\local\temp\tmp1kmbk6\distribute-0.6.24\build\src)
  self.local_index = Environment(self.shadow_path+sys.path)
warning: no files found matching 'Makefile' under directory 'docs'
warning: no files found matching 'indexsidebar.html' under directory 'docs'
error: E:\Program Files (x86)\Python3.2.2\Scripts\easy_install-script.py: Permission denied

尽管“脚本”目录已授予管理员“完全控制”权限,但我尝试推测性地为用户组添加“完全控制”。重新运行确实会产生一些警告:

Scanning installed packages
No setuptools distribution found
build\src\setuptools\command\easy_install.py:289: UserWarning: Unbuilt egg for distribute [unknown version] (c:\users\jhartley\appdata\local\temp\tmp31bznf\distribute-0.6.24\build\src)
  self.local_index = Environment(self.shadow_path+sys.path)
warning: no files found matching 'Makefile' under directory 'docs'
warning: no files found matching 'indexsidebar.html' under directory 'docs'

但似乎成功完成。

但是,然后运行“easy_install virtualenv”会产生一个用户帐户控制对话框“您要允许来自未知发布者的以下程序对此计算机进行更改吗?” 然后创建一个新的 CMD 窗口,该窗口闪烁并消失得太快而无法看到,并且似乎无法正常工作:virtualenv 尚未安装。

我想阻止 UAC 对话框每次都出现。这很烦人:“easy_install”是我信任的程序,我不应该每次运行它时都需要确认。我能找到的所有阻止 UAC 对话框出现的解决方案都涉及为可执行文件创建一个神奇的可双击快捷方式。我还没有找到任何命令行应用程序。

我还想阻止 easy_install 在新的 cmd 窗口中启动。这使得无法看到输出。这个问题似乎与 UAC 对话框无关,因为全局关闭 UAC 意味着 easy_install 将在没有对话框的情况下运行,但它仍然在新窗口中运行。

这里发生了什么?我究竟做错了什么?

4

2 回答 2

5

打开命令提示符时,您似乎必须使用“以管理员身份运行”选项,因为正如您妻子所说,“Windows is f****d”。正如您似乎也发现的那样,关闭 UAC 是避免在这样做时获得 UAC 对话框的一种方法。

于 2012-01-21T15:56:23.863 回答
1

明确授予我自己的用户对整个系统 Python 安装目录及其子目录的“完全控制权”使得 easy_install 工作。

然而,这并不完全令人满意:

  • easy_install 仍然会产生 UAC 对话框。我想关闭它,因为 easy_install 是我信任的程序
  • easy_install 仍然在一个新的 cmd 窗口中启动,然后消失,所以如果需要,我无法检查输出(例如,当它早些时候失败时)
于 2012-01-21T10:16:02.650 回答