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
工作正常。