![](/img/trans.png)
[英]How do I run a Python script from a subdirectory without breaking upper-level imports?
[英]How do I run a python 3 script that imports yaml from bash
我正在从bash脚本内部使用python2.x调用python脚本。 如何将其更新到python 3.X?
这是我需要能够分发给客户端的脚本,使用venv cli无法正常工作
在CentOS上运行
首先,我已经安装了任意数量的python 3软件包。
$ sudo yum list installed | grep python3
python3-other-rpm-macros.noarch 3-25.el7 @epel
python34.x86_64 3.4.10-2.el7 @epel
python34-devel.x86_64 3.4.10-2.el7 @epel
python34-libs.x86_64 3.4.10-2.el7 @epel
python34-pip.noarch 8.1.2-8.el7 @epel
python34-setuptools.noarch 39.2.0-3.el7 @epel
python36.x86_64 3.6.8-1.el7 @epel
python36-libs.x86_64 3.6.8-1.el7 @epel
$ sudo pip3.4 install pyyaml
Requirement already satisfied (use --upgrade to upgrade): pyyaml in /usr/lib64/python3.4/site-packages
从bash脚本do_update.sh
#!/bin/bash
python3 update_yaml.py
来自python脚本update_yaml.py
import sys
import common_update
import subprocess
with open.('input.yaml') as in_yaml:
input_data = yaml.safe_load(in_yaml)
我希望它能够解析input.yaml
输出: "ModuleNotFoundError: No module named 'yaml'"
看来您可能安装了多个版本的python。
不再建议使用pip
脚本(或pip3.4
等)。一个常见的问题是,您实际上为与预期版本不同的python版本安装了软件包。
而是这样做:
sudo python3 -m pip install pyyaml
这样,您可以确定python3
将能够使用该库。
永远不要运行pip install
下的CentOS / RHEL根除非它里面virtualenv
,或除非你想搞砸你的系统。
有包:
yum install python34-PyYAML
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.