【发布时间】:2016-04-24 10:10:31
【问题描述】:
所以我希望能够更有弹性地编写我的代码,从我正在考虑解决导入问题的 python 顶部开始。
我希望代码在尚未安装所需软件包的系统上运行。为了实现这一点,我希望在运行时使用 python 安装包。
try:
import pygame as pg
except(ImportError):
# [install pygame][1] here
# Download and run pygame.MSI (windows)
# apt-get install python-pygame
install pygame 从这个特定的解决方案中,我打算制作一个更通用功能 ...
import subprocess as sp
def imp(inP,name,location):
try:
exec "import "+inP+" as "+(name if name != "" else "")
except ImportError:
try:
os = ????
if(os == windows):
sp.call("pip install "+location,shell=True)
if(os == unix):
sp.call("sudo apt-get install python-"+inP,shell=True)
r = True
except Exception:
print colPrt("ERROR installing ") + inP
r = False
try:
exec "import "+inP+" as "+(name if name != "" else "")
except(ImportError):
print colPrt("ERROR importing ") + inP
r = False
return r
所以我的一个问题变成了 2。第一个是在运行中安装模块的最佳实践,第二个是 unix 和 windows 环境之间的区别。
Ps,colPrt 只是将红色文本返回到终端
def colPrt(s):
return("\x1B["+"31;40m" + str(s) + "\x1B[" + "0m")
感谢您的想法:)
【问题讨论】:
-
FWIW,我相信
except (ImportError e)语法不正确。 . . -
考虑使用python wheels 安装您的软件。如果您将依赖项放在轮子中,它们将在安装软件时安装。这样做的好处是用户将为您执行安装所需的任何权限提升。