请教如何在没有安装python的环境中执行py脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教如何在没有安装python的环境中执行py脚本相关的知识,希望对你有一定的参考价值。

py2exe是把python interpreter和用到的库打包在一起,放在一个exe文件里。
另外,shedskin把python编译为c++,再编译为原生的可执行文件。但它对python(语言特性和标准库)的支持不完全,能否编译你的程序要你自己去看。
参考技术A 你可以将你的py文件转化为exe进行执行 参考技术B 您好,请问您是想知道请教如何在没有安装python的环境中执行py脚本吗?

Python包安装脚本安装二进制可执行文件

我有一个包awesomepkgsetup.py。当用户运行awesometool时,我想在命令行中安装二进制可执行文件pip install awesomepkg以及软件包本身。我为awesometool编译了不同的操作系统版本,它位于bin/旁边的setup.py文件夹中。

但是,我找不到配置setup.py的好方法。我尝试过以下方法:

  1. scripts=[]中使用setup()关键字。不幸的是,“可执行文件”必须是python脚本。
  2. 所以我尝试使用os.system('bin/awesometool')将二进制文件包装在python脚本中进行委托。它也失败了因为包装脚本被pip复制到其他地方,所以它不知道相对路径bin/awesometool在哪里。
  3. 另一个可能的解决方案是data_files关键字。但是,由于某种原因,数据文件不会复制到site_packages安装目录,即使运行python setup.py bdist_wheel说它们已被复制。

参考:https://docs.python.org/3/distutils/setupscript.html

答案

我自己也遇到过这个问题。我的解决方案是三倍。

  1. 我添加了该程序,例如awesometool,我的包结构,所以我可以通过package_data关键字添加它:package_data={'awesomepkg': ['awesometool']}。这导致它在安装期间实际上被复制到与主init.py相同的文件夹中。
  2. 我创建了一个类似于步骤2的python脚本。但是,我首先导入awesomepkg而不是相对路径,并使用awesomepkg.__path__获取包的安装文件夹的绝对路径。这看起来像: import awesomepkg import subprocess as sp import sys path = awesomepkg.__path__[0] command = path + "/awesometool" sp.call([command] + sys.argv) 我也使用subprocess而不是system,但结果应该是相同的。
  3. 我将此脚本添加到scriptssetup()关键字中
另一答案

从一个包内可以使用

import os
command = os.path.join(os.path.dirname(__file__), "awesometool")

以上是关于请教如何在没有安装python的环境中执行py脚本的主要内容,如果未能解决你的问题,请参考以下文章

python 新手请教,用java调用.py如何用java传入python参数,谢谢

python脚本怎么执行

教你如何在win10下自动运行python程序脚本

请教可以查看python解释器版本号或者安装路径命令

无法执行 Python 脚本

模块作为Python中没有.py的脚本?