对于如何在不使用CD-cd进入目录的情况下在命令行中使用Python脚本?是PYTHONPATH吗?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于C#使用IronPython库调用Pyt
对于如何在不使用CD-cd进入目录的情况下在命令行中使用Python脚本?是PYTHONPATH吗?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于C#使用IronPython库调用Python脚本、Python-在命令行模块运行期间添加PYTHONPATH、Python-如何使Python脚本独立可执行,以在不依赖关系的情况下运行?、python:我可以在不实际安装python的情况下运行python脚本吗?的宝贵知识。
本文目录一览:- 如何在不使用CD-cd进入目录的情况下在命令行中使用Python脚本?是PYTHONPATH吗?
- C#使用IronPython库调用Python脚本
- Python-在命令行模块运行期间添加PYTHONPATH
- Python-如何使Python脚本独立可执行,以在不依赖关系的情况下运行?
- python:我可以在不实际安装python的情况下运行python脚本吗?
如何在不使用CD-cd进入目录的情况下在命令行中使用Python脚本?是PYTHONPATH吗?
如何使用PYTHONPATH?当我尝试在路径中运行脚本时,找不到文件。当我进入包含该脚本的目录时,该脚本将运行。那么PYTHONPATH有什么用呢?
$ echo $PYTHONPATH:/home/randy/lib/python$ tree -L 1 ''/home/randy/lib/python'' /home/randy/lib/python├── gbmx_html.py├── gbmx.py├── __init__.py├── __pycache__├── scripts└── yesno.py$ python gbmx.py -hpython: can''t open file ''gbmx.py'': [Errno 2] No such file or directory$ cd ''/home/randy/lib/python''
cd到文件目录后,它运行..
$ python gbmx.py -husage: gbmx.py [-h] [-b]
为什么我不能使用PYTHONPATH?
答案1
小编典典你正在寻找的是PATH。
export PATH=$PATH:/home/randy/lib/python
但是,要将Python
脚本作为程序运行,你还需要在第一行中为Python
设置shebang
。这样的事情应该起作用:
#!/usr/bin/env python
并赋予执行特权:
chmod +x /home/randy/lib/python/gbmx.py
然后,你应该可以gmbx.py
从任何地方简单地运行。
C#使用IronPython库调用Python脚本
IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Hugunin所发起,是一个开源的项目,基于微软的 DLR引擎。
IronPython的主页: IronPython.net /
github站点:
IronLanguages/ironpython3: Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime. (github.com)
IronLanguages/ironpython2: Implementation of the Python programming language for .NET Framework; built on top of the Dynamic Language Runtime (DLR). (github.com)
方式一:适用于python脚本中不包含第三方模块的情况
1、执行语句
借由IronPython,就可以利用.NET执行存储在Python脚本中的代码段。下面通过简单的示例说明如何应用C#调用Python脚本。
1、在VS中新建窗体项目:IronPythonDemo
2、VS的菜单中打开“Nuget程序包管理器”
3、搜索IronPython程序包并安装
安装后自动引用如下的DLL
4、在exe程序所在文件夹下创建Python脚本。Python示例脚本实现求两个数的四则运算:
num1=arg1 num2=arg2 op=arg3 if op==1: result=num1+num2 elif op==2: result=num1-num2 elif op==3: result=num1*num2 else: result=num1*1.0/num2
设置IronPythonDemo.py文件属性为“复制到输出目录”
5、修改工程的配置文件App.config如下:
其中microsoft.scripting节点中设置了IronPython语言引擎的几个属性。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting"/> </configSections> <microsoft.scripting> <languages> <language names="IronPython;Python;py" extensions=".py" displayName="Python" type="IronPython.Runtime.PythonContext, IronPython"/> </languages> </microsoft.scripting> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
6、 绘制窗体如下:
7、编写计算的函数:
ScriptRuntime scriptRuntime = ScriptRuntime.CreateFromConfiguration(); ScriptEngine pyEngine = scriptRuntime.GetEngine("python"); ScriptSource source = pyEngine.CreateScriptSourceFromFile("IronPythonDemo.py");//设置脚本文件 ScriptScope scope = pyEngine.CreateScope(); try { //设置参数 scope.SetVariable("arg1", Convert.ToInt32(txtNum1.Text)); scope.SetVariable("arg2", Convert.ToInt32(txtNum2.Text)); scope.SetVariable("arg3", operation.SelectedIndex + 1); } catch (Exception) { MessageBox.Show("输入有误。"); } source.Execute(scope); labelResult.Text = scope.GetVariable("result").ToString(); }
8、编译运行可得计算结果(此处未做输入的检查)
2、执行函数
IronPythonDemo2.py
def main(arr): try: arr = set(arr) arr = sorted(arr) arr = arr[0:] return str(arr) except Exception as err: return str(err)
c#代码
ScriptEngine pyEngine = IronPython.Hosting.Python.CreateEngine();//创建Python解释器对象 dynamic py = pyEngine.ExecuteFile(@"IronPythonDemo2.py");//读取脚本文件 int[] array = new int[9] { 9, 3, 5, 7, 2, 1, 3, 6, 8 }; string reStr = py.main(array);//调用脚本文件中对应的函数 MessageBox.Show(reStr); //或者 ScriptRuntime pyRuntime = IronPython.Hosting.Python.CreateRuntime(); //创建一下运行环境 dynamic obj = pyRuntime.UseFile("IronPythonDemo2.py"); //调用一个Python文件 int[] array = new int[9] { 9, 3, 5, 7, 2, 1, 3, 6, 8 }; string reStr = obj.main(array);//调用脚本文件中对应的函数 MessageBox.Show(reStr);
方式二:适用于python脚本中包含第三方模块的情况
C#代码
using System; using System.Collections; using System.Diagnostics; namespace Test { class Program { static void Main(string[] args) { Process p = new Process(); string path = "reset_ipc.py";//待处理python文件的路径,本例中放在debug文件夹下 string sArguments = path; ArrayList arrayList = new ArrayList(); arrayList.Add("com4"); arrayList.Add(57600); arrayList.Add("password"); foreach (var param in arrayList)//添加参数 { sArguments += " " + sigstr; } p.StartInfo.FileName = @"D:\Python2\python.exe"; //python2.7的安装路径 p.StartInfo.Arguments = sArguments;//python命令的参数 p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start();//启动进程 Console.WriteLine("执行完毕!"); Console.ReadKey(); } } }
python脚本
# -*- coding: UTF-8 -*- import serial import time def resetIPC(com, baudrate, password, timeout=0.5): ser=serial.Serial(com, baudrate, timeout=timeout) flag=True try: ser.close() ser.open() ser.write("\n".encode("utf-8")) time.sleep(1) ser.write("root\n".encode("utf-8")) time.sleep(1) passwordStr="%s\n" % password ser.write(passwordStr.encode("utf-8")) time.sleep(1) ser.write("killall -9 xxx\n".encode("utf-8")) time.sleep(1) ser.write("rm /etc/xxx/xxx_user.*\n".encode("utf-8")) time.sleep(1) ser.write("reboot\n".encode("utf-8")) time.sleep(1) except Exception: flag=False finally: ser.close() return flag resetIPC(sys.argv[1], sys.argv[2], sys.argv[3])
上面的python脚本实现的是重启IPC设备,测试功能成功。
调用包含第三方模块的python脚本时,尝试过使用path.append()方式,调试有各种问题,最终放弃了,没有研究。
到此这篇关于C#使用IronPython库调用Python脚本的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
- IronPython连接MySQL的方法步骤
- 在ironpython中利用装饰器执行SQL操作的例子
- 使用IronPython把Python脚本集成到.NET程序中的教程
- 推荐下python/ironpython:从入门到精通
Python-在命令行模块运行期间添加PYTHONPATH
我要跑步:
python somescript.py somecommand
但是,当我运行它时,我需要PYTHONPATH
包括一个目录。我不能仅将其添加到我的环境变量中,因为我要添加的目录会根据我正在运行的项目进行更改。PYTHONPATH
运行脚本时有没有办法改变?注意:我什至没有PYTHONPATH
变量,因此我不必担心在运行此脚本期间将其追加或覆盖它。
答案1
小编典典对于Mac / Linux;
PYTHONPATH=/foo/bar/baz python somescript.py somecommand
对于Windows,设置包装器pythonpath.bat
;
@ECHO OFFsetlocalset PYTHONPATH=%1python %2 %3endlocal
并调用pythonpath.bat
脚本文件,例如;
pythonpath.bat /foo/bar/baz somescript.py somecommand
Python-如何使Python脚本独立可执行,以在不依赖关系的情况下运行?
我正在构建一个Python应用程序,不想强迫我的客户安装Python和模块。
那么,有没有办法将Python脚本编译为独立的可执行文件?
答案1
小编典典你可以使用py2exe作为已应答文件,并使用cython在.py C
中转换密钥.py文
件,在Windows和.so
的linux
中转换.dll
等编译过的文件,比普通的.pyo
和.pyc
文件要难得多(还可以提高性能!)
答案2
小编典典可以使用PyInstaller将Python程序打包为独立的可执行文件。它适用于Windows,Linux和Mac。
PyInstaller快速入门
从PyPI安装PyInstaller:
pip install pyinstaller
转到程序的目录并运行:
pyinstaller yourprogram.py
这将在名为的子目录中生成捆绑包dist。
有关更详细的演练,请参见手册。
python:我可以在不实际安装python的情况下运行python脚本吗?
我写了一些要在其他计算机上运行的.py文件。目标机器未安装python,因此我无法通过策略“安装”它。我所能做的就是复制文件,运行我的东西,然后将其删除。
我试图将开发python文件夹移至目标计算机,将cd移至python文件夹并运行python.exe/path/to/.py/file
。它给我一个错误,指出未注册python.dll。如果我注册了DLL,这可能会使我跨过“违反政策”行。
无论如何,我是否可以在没有实际安装python的机器上完成运行python文件的操作(试图让py2exe现在工作,但这很痛苦)?
答案1
小编典典我决定使用cx_Freeze。
它创建了一个发行版,我可以简单地将其复制并移动到目标计算机。而且,它比py2exe 更容易 使用。此外,它似乎仍在 维护中
(截至2011年3月10日),而py2exe开发似乎并不那么活跃。
我们今天的关于如何在不使用CD-cd进入目录的情况下在命令行中使用Python脚本?是PYTHONPATH吗?的分享就到这里,谢谢您的阅读,如果想了解更多关于C#使用IronPython库调用Python脚本、Python-在命令行模块运行期间添加PYTHONPATH、Python-如何使Python脚本独立可执行,以在不依赖关系的情况下运行?、python:我可以在不实际安装python的情况下运行python脚本吗?的相关信息,可以在本站进行搜索。
本文标签: