我是Python的新手。我已经做了一些python脚本,我在windows环境中编写。我想让这个脚本在Ubuntu上运行,而不需要像在windows环境中那样再次进行软件包安装。我的期望是,当我将脚本复制到Ubuntu环境中时,它将直接运行。有可能吗?
到目前为止,我写了一个setup.py来检查安装情况,但当我在Ubuntu环境中运行它时,它需要再次安装一些pip
包。
import subprocess
req = {
"pip", "pyunpack", "patool", "Archive"
}
def existing_package():
result = subprocess.run(["pip", "list"], stdout=subprocess.PIPE)
result = result.stdout.decode('utf-8').split("n")
return [r.split()[0] for r in result[2:-1]]
def main():
exist = set(existing_package())
if req.issubset(exist):
print(f"✓ All package has installed successfullyn")
else:
print(f"This package {req - exist} is not installed")
input("Press Enter to install...")
for request in req - exist:
subprocess.run(["pip", "install", request])
if __name__ == "__main__":
main()
任何人都可以给我主意。非常感谢
有很多方法可以确保脚本安装了所有必需的包。最简单的方法是使用pip,这里有一个的例子
# While developing
pip install pyunpack patool Archive
pip freeze > requirements.txt
# On your (ubuntu) server
pip install -r requirements.txt
虽然这很可能会起作用,但不建议这样做,主要是因为你可能会更新Ubuntu本身使用的软件包。下面列出了实现这一点的更优雅的方法,按复杂性排序。
- 虚拟环境
- pyenv
- 诗歌
- https://docs.docker.com/language/python/build-images/
(这个列表还远远不够完整,只是我过去喜欢使用的一些工具。(