我会在这个问题前面加上:不,设置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)无论我使用的系统如何,我如何确定安装铁Python的目录? (IronPython安装程序可能会设置一个var?)
这里只是一个注释是的,我看到一些其他帖子说“设置你的IRONPYTHONPATH”.这没有帮助如果我有一台空白机器,这意味着我必须:
1)安装IronPython
2)运行一些疯狂的PowerShell脚本来搜索安装了标准库的位置,并为其设置一个全局IRONPYTHONPATH变量.
3)运行python脚本
我在寻找更好的方法.
–
编辑:
事实上,我正在使用这样的功能来做事情基本上是无关紧要的,但是我正在尝试实现以下一些:
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)
解决方法
我发现,为了确保一切适用于非开发人员第三方,通常最好使用pyc.py来创建DLL和可执行文件.我经常创建一个python标准模块的DLL,并在代码中引用.在这个问题
IronPython: EXE compiled using pyc.py cannot import module “os”看到我以前的答案