我对 python 相当陌生,遇到了一个无法解决的问题。我有一个依赖于模块 B 的模块 A。通常,A 下载 B 并将其与其余鸡蛋一起存储在我的 virtualenv 站点包中。现在,我想使用 B 的本地版本来代替下载的 B 版本,但无论我做什么,A 仍然在其站点包中使用 B,而不是我在 PYTHONPATH 中指定的包。
我知道我的本地 B 设置正确,因为如果我将它添加到我的 PYTHONPATH 并且我不使用 virtualenv,我就可以很好地使用它。
如果我打开 ipython,并将本地 B 添加到 PYTHONPATH,我会看到我的 sys.path 首先列出了站点包版本,然后是 PYTHONPATH 中的目录。如果我做了一些黑客行为,比如颠倒 sys.path 的顺序并尝试加载 B,它仍然使用站点包中的 B。我发现解决此问题的唯一方法是创建从站点包中的 B 到本地 B 的符号链接,并删除本地 B 中的所有 *.pyc 文件。必须有更好的方法要做到这一点...任何帮助都会很棒。谢谢你!
我不确定这是否重要,但作为参考,我正在使用以下版本的东西:
我正在尝试使用pip安装python confluent-kafka软件包。我正在运行Amazon Linux(版本Amazon Linux AMI版本2016.09)的aws ec2实例上尝试此操作。我只是在做:
pip install pip install confluent-kafka
Run Code Online (Sandbox Code Playgroud)
但是,这会产生以下错误:
In file included from confluent_kafka/src/confluent_kafka.c:17:0:
confluent_kafka/src/confluent_kafka.h:21:32: fatal error: librdkafka/rdkafka.h: No such file or directory
#include <librdkafka/rdkafka.h>
^
compilation terminated.
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我做了两件事:
1)按照此页面上的说明进行操作,并在文件/etc/yum.repos.d/confluent.repo中添加以下内容:
[Confluent.dist]
name=Confluent repository (dist)
baseurl=http://packages.confluent.io/rpm/3.0/6
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.0/archive.key
enabled=1
[Confluent]
name=Confluent repository
baseurl=http://packages.confluent.io/rpm/3.0
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.0/archive.key
enabled=1
Run Code Online (Sandbox Code Playgroud)
2)尝试使用以下命令安装librdkafka库:
sudo yum clean all
sudo yum install -y librdkafka1 librdkafka-devel
Run Code Online (Sandbox Code Playgroud)
Yum吐出此错误,但是:
Error: Package: librdkafka1-0.9.1_confluent3.0.1-1.el7.x86_64 (Confluent.dist)
Requires: openssl-libs
Error: Package: librdkafka1-0.9.1_confluent3.0.1-1.el7.x86_64 (Confluent.dist) …
Run Code Online (Sandbox Code Playgroud)