微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何在IronPython中使用标准库?

我会在这个问题前面加上:不,设置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”看到我以前的答案

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐