加载psycopg2模块时从'wheel'安装时出错

我正试图从包含wheel档案的本地软件包目录安装一些python需求。 我在Docker容器中安装需求。

我遵循的步骤是:

$ pip install wheel # wheel runs, outputs .whl files to wheelhouse directory $ pip wheel --wheel-dir wheelhouse -r requirements.txt 

然后,在我的Dockerfile

 ADD requirements.txt /tmp/requirements.txt ADD wheelhouse /tmp/wheelhouse # install requirements. Leave file in /tmp for now - may be useful. RUN pip install --use-wheel --no-index --find-link /tmp/wheelhouse/ -r /tmp/requirements.txt 

这工作 – 所有要求都正确安装:

 # 'app' is the name of my built docker image $ docker run app pip list ... psycopg2 (2.5.1) ... 

但是,如果我真的尝试在使用 psycopg2的容器内部运行某些东西,那么我得到以下结果:

 Error loading psycopg2 module: /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so: undefined symbol: PyUnicodeUCS4_AsUTF8String 

我认为这是与build立轮子的方式有关 – 我在容器主机(Ubuntu 12.04)上运行pip wheel

我该如何解决这个问题 – 使用轮子大大减less了生成容器映像所花费的时间,所以我不想恢复到安装软件包,如果我可以帮助它?

我不知道什么轮子或docker是什么,但是你的错误来自用于构build模块的Python和试图运行它的Python之间的不匹配。

根据我的经验,从源代码安装/构build时,psycopg2可能会比较挑剔,所以不会感到惊讶的是它不会被包装成一个轮子。 但是,你能简单地把所有东西都从psycopg2中分离出来吗? 仍然会为你节省一堆时间。