2017-04-21 111 views
0

我需要在Windows上为项目安装Python 3.6.1 x64。我卸载了3.6.1 x86并安装了3.6.1 x64。我确保我的PATH env var指向新的安装。我则关联PY文件用正确的python.exe: C:\ Program Files文件\ Python36 \ python.exe 代替: C:\ Program Files文件(x86)的\ Python36-32 \ python.exe在Windows上安装Python x64后无法从资源管理器启动脚本

我可以通过调用python直接从cmd窗口运行脚本没有问题: python myscript.py

但是,如果我双击它显示一个cmd windows bot没有什么。

如果我“打开”,它不会加载,只需等待几秒钟即可。即使在我浏览新的python.exe之后,我还想念什么?

一切工作正常蟒蛇x86

谢谢!

+0

在用于设置文件关联的控制面板“默认程序”对话框中,确保.py文件与来自Python软件基金会的“Python”相关联,并带有描述“Python文件”。如果你已经安装py启动器,该图标应该有Python标志,可能还有一个火箭。 – eryksun

+0

是的,它与发射器(与火箭蟒图标)相关联。我只是完全卸载了3.6.1 x64,手动删除了所有的python安装文件夹并重新安装了x64。我得到同样的东西。它看起来像一个问题与启动程序(py.exe)不是python – Geordie

回答

1

勒叹,发生了两个问题。有些东西被Python安装在某处,完全卸载并重新安装3.6.1 x64修复了一般的python执行。

其次,我使用Pywinauto,这就是为什么我需要x64访问x64应用程序的用户界面。显然它也需要提升用户权限,即管理员。所以,如果我双击一个脚本,它只会挂起,没有反馈,错误等,因为启动程序没有与管理权限运行。

我没有理解这一点,因为我总是从提升的cmd窗口手动执行python。如果我找到一种方法来始终以管理员身份执行启动器,我将在此处进行更新。

UPDATE: 这里有一个深入的线程上得到的Python在Windows上提升执行权限: How to run python script with elevated privilege on windows

这是更容易为我写一个PowerShell脚本来做好这项工作:

# ========================================= Admin Rights ======================================================= 
function asAdmin 
{ 
    [string]$cmdPath = $args[0] 
    if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$cmdPath`"" -Verb RunAs; exit } 
} 

asAdmin $PSCommandPath 

Start-Process "pythonw" "$PSScriptRoot\myPythonScriptWithUI.pyw" 
+1

你的意思是你想要一个特定的脚本执行提升,或者你总是希望py.exe运行提升?后者可以通过在py.exe的兼容性属性中以管理员身份强制运行来实现。在引擎盖下,这被设置在'HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers'中,作为具有完整路径的可执行文件和数据'〜RUNASADMIN'的值。 – eryksun

+1

如果它是前者,脚本可以使用“runas”动词来自动执行“ShellExecuteEx”。使用“Ex”版本而不是'ShellExecute'可以获得进程句柄。然后调用'WaitForSingleObject'来等待提升的实例退出,'GetExitCodeProcess'代理它自己的退出代码。您可以通过PyWin32或ctypes或自定义扩展模块来调用这些函数。 – eryksun

+0

只是特定的脚本。是的,我在这里看到一个关于让Python脚本以管理员身份运行的主题,但对于我来说,只要有一个启动器Powershell脚本来执行相同的操作然后启动Python就会更容易。 – Geordie