python TypeError:必须是没有NULL字节的编码string,而不是str – docker iron requirements.txt

我一直在试图部署一个python脚本到Iron.io. 他们build议在上传之前使用docker进行本地testing。

我已经完成了他们提供的docker / iron教程,没有错误。

所以我开始修改从他们的示例回购提供的requirements.txt来启动我自己的项目,但每当我尝试在本地安装包,我收到一个TypeError。

我的点是版本:

pip 7.1.2 from /Library/Python/2.7/site-packages (python 2.7) 

他们的要求.txt

 iron-mq>=0.5 iron-worker>=1.3.1 

我的requirements.txt

 iron-mq>=0.5 iron-worker>=1.3.1 beautifulsoup4 html5lib 

terminal命令:

 $ docker run --rm -v "$PWD":/worker -w /worker iron/python:2-dev pip install -t packages -r requirements.txt 

错误:

 Exception: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main status = self.run(options, args) File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 282, in run wheel_cache File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 291, in populate_requirement_set wheel_cache=wheel_cache): File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 89, in parse_requirements for req in req_iter: File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 137, in process_line isolated=isolated, options=req_options, wheel_cache=wheel_cache File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 168, in from_line if (os.path.isdir(p) and File "/usr/lib/python2.7/genericpath.py", line 49, in isdir st = os.stat(s) TypeError: must be encoded string without NULL bytes, not str 

我在OSX上使用Sublime,并使用UTF-8编码。 关于这个错误的其他线程通常通过转义某些字符或改变编码来解决。 但是我找不到可供select的编码方式。

没有任何空字节保存要求有一个技巧? 还是有另一个已知的修复?

编辑更新:

用-vvv max verbose模式运行pip

 docker run --rm -v "$PWD":/worker -w /worker iron/python:2-dev pip install -vvv -t packages -r requirements.txt 

 Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main status = self.run(options, args) File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 282, in run wheel_cache File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 291, in populate_requirement_set wheel_cache=wheel_cache): File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 89, in parse_requirements for req in req_iter: File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 137, in process_line isolated=isolated, options=req_options, wheel_cache=wheel_cache File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 168, in from_line if (os.path.isdir(p) and File "/usr/lib/python2.7/genericpath.py", line 49, in isdir st = os.stat(s) TypeError: must be encoded string without NULL bytes, not str Starting new HTTPS connection (1): pypi.python.org "GET /pypi/pip/json HTTP/1.1" 200 50975 

唯一的新产出是底部的两条线。

运行iconv来识别任何stream氓字符只是返回txt文件的内容。

 iconv -t UTF-8 requirements.txt iron-mq>=0.5 iron-worker>=1.3.1 beautifulsoup4==4.4.1 

我有同样的麻烦,试图在我的Mac与铁docker图像运行pip install 。 在尝试了一堆东西来解决它之后,我将问题跟踪到了Docker Toolbox和vboxfs。 他们没有正确同步主机文件系统更改。 为了解决这个问题,在docker toolbox VM中运行:

sync; echo 3 > /proc/sys/vm/drop_caches

sync调用将任何挂起的写入同步到磁盘。 第二个命令告诉内核清除文件系统caching。

一旦我这样做,我的pip install工作正常。