我需要在我的脚本中直接从PyPi安装一个包.也许有一些模块或distutils(distribute,pip等)功能,它允许我只是执行像pypi.install('requests')和请求将被安装到我的virtualenv.
假设有一个脚本做这样的事情:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
Run Code Online (Sandbox Code Playgroud)
现在假设我想捕获write函数的输出并将其存储在变量中以供进一步处理.天真的解决方案是:
# module mymodule.py
from writer import write
out = write()
print out.upper()
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我想出了另一个解决方案并且它有效,但是请告诉我是否有更好的方法来解决问题.谢谢
import sys
from cStringIO import StringIO
# setup the environment
backup = sys.stdout
# ####
sys.stdout = StringIO() # capture output
write()
out = sys.stdout.getvalue() # release output
# ####
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
print out.upper() # post processing
Run Code Online (Sandbox Code Playgroud) 我正在尝试为一个名为Zulip的开源项目构建python api,并且我一直遇到如下截图所示的相同问题.
我正在运行python3,我的pip版本是10.0.0.有问题的文件setup.py和乱码的代码pip.main()是访问属性以安装包时.
现在,我知道这个构建应该成功,因为它是一个开源项目,但我一直在努力解决依赖问题pip.main().
任何帮助将不胜感激.
我正在尝试审计具有大量依赖项的Python项目,虽然我可以手动查找每个项目的主页/许可条款,但似乎大多数OSS软件包应该已经在其元数据中包含许可证名称和版本.
不幸的是我找不到pip或easy_install中的任何选项来列出超过包名和安装版本(通过pip冻结).
有没有人指向一个工具来列出Python包的许可证元数据?
你好,我有一个像这样的字符串:
AdvancedHTMLParser (8.0.1)\nappdirs (1.4.3)\nbeautifulsoup4 (4.6.0)\nchardet (3.0.4)\nchrome-gnome-shell (0.0.0)\ncupshelpers (1.0)\ncycler (0.10.0)\nCython (0.27.3)
Run Code Online (Sandbox Code Playgroud)
我想将其拆分为元组列表。这样每个列表项都有一个包含两个值的元组,即名称和版本(不带括号)。
我只能按换行符分割字符串,但我不知道如何正确获取括号中的数字等有人可以解释我如何做到这一点吗?
编辑:
我正在尝试解析pip list local
def get_installed_modules(self):
data = subprocess.check_output(["pip", "list", "--local"])
result = [tuple(line.replace('(', '').replace(')', '').split())
for line in data.splitlines()]
print(result)
Run Code Online (Sandbox Code Playgroud)
我有一个项目,我不能只分割字符串,但它需要一个类似字节的对象......
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud) python ×5
pip ×3
easy-install ×1
licensing ×1
list ×1
pypi ×1
stdout ×1
sys ×1
tuples ×1
virtualenv ×1