【发布时间】:2011-08-10 03:35:03
【问题描述】:
我会在这个问题前面加上:不,设置 IRONPYTHONPATH 不是答案。
无论如何...
我曾计划在一个项目中使用 IronPython 作为 Powershell 的替代品,但还没开始我就被难住了。
我尝试做的第一件事是使用 os.path,结果是:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named os
在搞砸之后,我终于发现我可以通过手动将标准库添加到路径中来使用它:
import sys
sys.path.append(r"C:\Program Files\IronPython 2.7\Lib")
import os
但是,这是一个愚蠢的想法。在我的脚本中对 python 库的路径进行硬编码是 100% 保证使它们在某些时候无法工作的方法。
当我尝试在 Windows 7 机器上使用该脚本并且路径略有不同(“Program Files (x86)”)时,我几乎立即发现了这一点。
所以,这里有几个问题:
1) 为什么使用标准库这么难?至少我会想到VS中的交互式提示和基本的ipy.exe会有这个。
2) 无论我使用的是什么系统,如何确定 Iron python 的安装目录?(IronPython 安装程序可能设置了一个 var?)
这里只是一个注释;是的,我看到其他一些帖子说“设置你的 IRONPYTHONPATH”。这无济于事。如果我有一台空白机器,这意味着我必须:
1) 安装 IronPython
2) 运行一些疯狂的 powershell 脚本来搜索标准库的安装位置,并为其设置一个全局 IRONPYTHONPATH 变量。
3) 运行 python 脚本
我正在寻找更好的方法。
--
编辑:
我用它来做类似 powershell 的事情基本上是无关紧要的,但我正在努力实现类似的目标:
import clr
from System.Management.Automation import RunspaceInvoke
import os
scriptRoot = os.getcwd()
runSpace = RunspaceInvoke()
cmdPath64 = os.join(scriptRoot, "..\java\...")
cmdPath32 = os.join(scriptRoot, "..\java\...")
proc = runSpace.Invoke("Get-WmiObject Win32_Processor ... ")
if proc.AddressWidth == 32:
runSpace.Invoke(cmdPath32)
else:
runSpace.Invoke(cmdPath64)
【问题讨论】:
-
您能否展示一个示例脚本,说明您将尝试做什么以及打算如何使用它?我不确定我是否理解问题所在。
-
见上面的编辑。不过,这基本上与我的问题无关。
标签: c# python ironpython