2017-09-30 108 views
2

林在我的搬运工安装pipenv:如何让docker在docker中运行?

RUN pip install pipenv 
RUN cd /my/app/path/ && pipenv install 
RUN cd /my/app/path/ && pipenv shell 

即时得到错误:

Traceback (most recent call last): 
    File "/usr/local/bin/pipenv", line 11, in <module> 
    sys.exit(cli()) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 722, in __call__ 
    return self.main(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 697, in main 
    rv = self.invoke(ctx) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 1066, in invoke 
    return _process_result(sub_ctx.command.invoke(sub_ctx)) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 895, in invoke 
    return ctx.invoke(self.callback, **ctx.params) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 535, in invoke 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/cli.py", line 2057, in shell 
    do_shell(three=three, python=python, fancy=fancy, shell_args=shell_args) 
    File "/usr/local/lib/python2.7/dist-packages/pipenv/cli.py", line 1952, in do_shell 
    shell = os.path.abspath(PIPENV_SHELL) 
    File "/usr/lib/python2.7/posixpath.py", line 360, in abspath 
    if not isabs(path): 
    File "/usr/lib/python2.7/posixpath.py", line 54, in isabs 
    return s.startswith('/') 
AttributeError: 'NoneType' object has no attribute 'startswith' 

如果我运行

RUN cd /my/app/path/ && pipenv install --system 

代替,即时得到另一个错误:

build 30-Sep-2017 16:50:45 Step 5/9 : RUN cd /my/app/path &&  pipenv install --system 
build 30-Sep-2017 16:50:45  ---> Running in cffd31633074 
build 30-Sep-2017 16:50:46 [91mPipfile.lock not found, creating… 
build 30-Sep-2017 16:50:46 [0m[91mLocking [dev-packages] dependencies… 
build 30-Sep-2017 16:50:46 [0m[91mLocking [packages] dependencies… 
build 30-Sep-2017 16:50:49 [0m[91mCRITICAL:pip.utils:Error [Errno 2] No such file or directory while executing command python setup.py egg_info 
build 30-Sep-2017 16:50:49 [0m[91mTraceback (most recent call last): 
build 30-Sep-2017 16:50:49  File "/usr/local/bin/pipenv", line 11, in <module> 
build 30-Sep-2017 16:50:49  sys.exit(cli()) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 722, in __call__ 
build 30-Sep-2017 16:50:49 [0m[91m return self.main(*args, **kwargs) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 697, in main 
build 30-Sep-2017 16:50:49 [0m[91m rv = self.invoke(ctx) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 1066, in invoke 
build 30-Sep-2017 16:50:49 [0m[91m return _process_result(sub_ctx.command.invoke(sub_ctx)) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 895, in invoke 
build 30-Sep-2017 16:50:49 [0m[91m return ctx.invoke(self.callback, **ctx.params) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/vendor/click/core.py", line 535, in invoke 
build 30-Sep-2017 16:50:49  return callback(*args, **kwargs) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/cli.py", line 1782, in install 
build 30-Sep-2017 16:50:49 [0m[91m do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/cli.py", line 1290, in do_init 
build 30-Sep-2017 16:50:49 [0m[91m do_lock(system=system) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/cli.py", line 1080, in do_lock 
build 30-Sep-2017 16:50:49 [0m[91m pre=pre 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/utils.py", line 421, in resolve_deps 
build 30-Sep-2017 16:50:49 [0m[91m resolved_tree.update(resolver.resolve()) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/piptools/resolver.py", line 101, in resolve 
build 30-Sep-2017 16:50:49 [0m[91m has_changed, best_matches = self._resolve_one_round() 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/piptools/resolver.py", line 199, in _resolve_one_round 
build 30-Sep-2017 16:50:49 [0m[91m for dep in self._iter_dependencies(best_match): 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/piptools/resolver.py", line 293, in _iter_dependencies 
build 30-Sep-2017 16:50:49  dependencies = self.repository.get_dependencies(ireq) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/piptools/repositories/pypi.py", line 171, in get_dependencies 
build 30-Sep-2017 16:50:49  result = reqset._prepare_file(self.finder, ireq) 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/pip/req/req_set.py", line 639, in _prepare_file 
build 30-Sep-2017 16:50:49 [0m[91m abstract_dist.prep_for_dist() 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist 
build 30-Sep-2017 16:50:49 [0m[91m self.req_to_install.run_egg_info() 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info 
build 30-Sep-2017 16:50:49 [0m[91m command_desc='python setup.py egg_info') 
build 30-Sep-2017 16:50:49  File "/usr/local/lib/python2.7/dist-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess 
build 30-Sep-2017 16:50:49 [0m[91m cwd=cwd, env=env) 
build 30-Sep-2017 16:50:49  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
build 30-Sep-2017 16:50:49 [0m[91m errread, errwrite) 
build 30-Sep-2017 16:50:49  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
build 30-Sep-2017 16:50:49 [0m[91m raise child_exception 
build 30-Sep-2017 16:50:49 OSError: [Errno 2] No such file or directory 
error 30-Sep-2017 16:50:49 The command '/bin/sh -c cd /opt/supercrunch/function-service/lib &&  pipenv install --system' returned a non-zero code: 1 
build 30-Sep-2017 16:50:49 [0mSending build context to Docker daemon 40.96 kB 

但当我代替做到以下几点:

RUN pip install pipenv 
RUN cd /my/app/path && pipenv install 
RUN cd /my/app/path && pipenv install --system 

它的工作...

于是两个问题:第一:为什么pipenv shell给我这个错误,第二:为什么我以前做pipenv installpipenv install --system让它工作?

我想使用pipenv创建具有不同python版本和不同依赖版本的虚拟环境。

+0

似乎是一个问题,它甚至没有在交互的shell中运行。所以它不会在Dockerfile中运行,因为在运行RUN命令时无法获取shell,它们都是在没有TTY的情况下运行的。但即使通过运行容器来获得shell也是行不通的,所以你应该向pipenv团队开放一个问题 –

回答

0

尝试

source `pipenv --venv`/bin/activate 
+0

这并不能解答这个问题。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18337224) – thewaywewere

+0

你能否更新你的答案并解释你在做什么。非常感谢提前 – MZaragoza

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18338029) – Rabbid76