我将这个问题加上前缀:不,设置IRONPYTHONPATH不是答案.
无论如何...
我计划使用IronPython作为项目的Powershell的替代品,但在我开始之前我一直都很难过.
我尝试做的第一件事是使用os.path,结果是:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named os
Run Code Online (Sandbox Code Playgroud)
搞砸了我终于发现我可以通过手动添加到路径来使用标准库:
import sys
sys.path.append(r"C:\Program Files\IronPython 2.7\Lib")
import os
Run Code Online (Sandbox Code Playgroud)
然而,这是一个愚蠢的想法.在我的脚本中硬编码python库的路径是一种100%保证的方式,使它们在某些时候不起作用.
当我尝试在Windows 7机器上使用脚本并且路径略有不同时('Program Files(x86)'),我几乎立即发现了这一点.
所以,这里有几个问题:
1)为什么使用标准库这么难?至少我会想到VS中的交互式提示和基本的ipy.exe会有这个.
2)无论我使用何种系统,如何确定安装铁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: …Run Code Online (Sandbox Code Playgroud) 所以我有一个基本的 ZIPPED IronPython(2.6 或 2.6.1),我只需解压缩,启动 ipy.exe,输入“import os”并按 Enter 键。发生以下输出:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named os
Run Code Online (Sandbox Code Playgroud)
即使我先导入 clr 它也不起作用。要做什么呢?
我用谷歌搜索过这个问题,但没有相关答案。最接近的想法是这个(但不起作用):
import clr
clr.AddReference("IronPython")
clr.AddReference("IronPython.Modules")
import os
Run Code Online (Sandbox Code Playgroud) 所以我试着寻找这个答案,然后直接来询问.将IronPython应用程序/脚本集转换为EXE似乎是可行的.一个问题是,他们似乎都在谈论将IronPython与IronPython Studios(Visual Studio的Python插件)一起使用.最后我查了一下,我认为IronPython Studios基本上被用于Visual Studios(或PTVS)插件工具的Python工具所取代.这个问题是由于我的代码的结构方式,它实际上设法在将我的代码加载到IDE时使插件崩溃,从而使Visual Studios崩溃.它会这样做,直到下个月定期更新在月底或下个月初发布.所以这不是一个选项,因为我不得不在Eclipse中使用PyDev插件开发我的项目.
我之前使用py2exe将一些基本的Python应用程序转换为可执行文件,但那时我正在使用CPython解释器.我不知道如何设置py2exe来使用IronPython.是否可以使用py2exe来生成IronPython可执行文件?如果我的程序使用额外的C#程序集来完成它的工作,我怎么设置它们以便py2exe可以使用它们,我的可执行文件可以看到它们用于引用?