from __future__ import absolute_import

import os
import os.path as op
import subprocess
import tempfile
from conda_env.pip_util import pip_args
from conda.exceptions import CondaValueError


def _pip_install_via_requirements(prefix, specs, args, *_, **kwargs):
    """
    Installs the pip dependencies in specs using a temporary pip requirements file.

    Args
    ----
    prefix: string
      The path to the python and pip executables.

    specs: iterable of strings
      Each element should be a valid pip dependency.
      See: https://pip.pypa.io/en/stable/user_guide/#requirements-files
           https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
    """
    try:
        pip_workdir = op.dirname(op.abspath(args.file))
    except AttributeError:
        pip_workdir = None
    requirements = None
    try:
        # Generate the temporary requirements file
        requirements = tempfile.NamedTemporaryFile(mode='w',
                                                   prefix='condaenv.',
                                                   suffix='.requirements.txt',
                                                   dir=pip_workdir,
                                                   delete=False)
        requirements.write('\n'.join(specs))
        requirements.close()
        # pip command line...
        args, pip_version = pip_args(prefix)
        pip_cmd = args + ['install', '-r', requirements.name]
        # ...run it
        process = subprocess.Popen(pip_cmd,
                                   cwd=pip_workdir,
                                   universal_newlines=True)
        process.communicate()
        if process.returncode != 0:
            raise CondaValueError("pip returned an error")
    finally:
        # Win/Appveyor does not like it if we use context manager + delete=True.
        # So we delete the temporary file in a finally block.
        if requirements is not None and op.isfile(requirements.name):
            os.remove(requirements.name)


# Conform to Installers API
install = _pip_install_via_requirements

conda_env/installers/pip.py
from __future__ import absolute_import

import os
import os.path as op
import subprocess
import tempfile
from conda_env.pip_util import pip_args
from conda.exceptions import CondaValueError


def _pip_install_via_requirements(prefix, specs, args, *_, **kwargs):
    """
    Installs the pip dependencies in specs using a temporary pip requirements file.

    Args
    ----
    prefix: string
      The path to the python and pip executables.

    specs: iterable of strings
      Each element should be a valid pip dependency.
      See: https://pip.pypa.io/en/stable/user_guide/#requirements-files
           https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
    """
    try:
        pip_workdir = op.dirname(op.abspath(args.file))
    except AttributeError:
        pip_workdir = None
    requirements = None
    try:
        # Generate the temporary requirements file
        requirements = tempfile.NamedTemporaryFile(mode='w',
                                                   prefix='condaenv.',
                                                   suffix='.requirements.txt',
                                                   dir=pip_workdir,
                                                   delete=False)
        requirements.write('\n'.join(specs))
        requirements.close()
        # pip command line...
        args, pip_version = pip_args(prefix)
        if args is None:
            return
        pip_cmd = args + ['install', '-r', requirements.name]
        # ...run it
        process = subprocess.Popen(pip_cmd,
                                   cwd=pip_workdir,
                                   universal_newlines=True)
        process.communicate()
        if process.returncode != 0:
            raise CondaValueError("pip returned an error")
    finally:
        # Win/Appveyor does not like it if we use context manager + delete=True.
        # So we delete the temporary file in a finally block.
        if requirements is not None and op.isfile(requirements.name):
            os.remove(requirements.name)


# Conform to Installers API
install = _pip_install_via_requirements

conda_env/installers/pip.py
diff --git a/conda_env/installers/pip.py b/conda_env/installers/pip.py
index e0dacd7d751..c7e76fbecc6 100644
--- a/conda_env/installers/pip.py
+++ b/conda_env/installers/pip.py
@@ -38,6 +38,8 @@ def _pip_install_via_requirements(prefix, specs, args, *_, **kwargs):
         requirements.close()
         # pip command line...
         args, pip_version = pip_args(prefix)
+        if args is None:
+            return
         pip_cmd = args + ['install', '-r', requirements.name]
         # ...run it
         process = subprocess.Popen(pip_cmd,

Conda DAND Udacity yaml file error
snadar@ubuntu-desktop:~$ conda env create -f dand-env-linux.yaml
Using Anaconda API: https://api.anaconda.org
Fetching package metadata ...........
Solving package specifications: .
icu-54.1-0.tar 100% |################################| Time: 0:01:11 165.48 kB/s
jpeg-8d-2.tar. 100% |################################| Time: 0:00:06 122.05 kB/s
libgcc-ng-7.2. 100% |################################| Time: 0:00:47 133.59 kB/s
libgfortran-3. 100% |################################| Time: 0:00:02 127.21 kB/s
libstdcxx-ng-7 100% |################################| Time: 0:00:18 140.57 kB/s
mkl-11.3.3-0.t 100% |################################| Time: 0:08:42 245.18 kB/s
openssl-1.0.2j 100% |################################| Time: 0:00:06 496.81 kB/s
pixman-0.32.6- 100% |################################| Time: 0:00:06 413.05 kB/s
readline-6.2-2 100% |################################| Time: 0:00:01 333.28 kB/s
sqlite-3.13.0- 100% |################################| Time: 0:00:08 497.93 kB/s
tk-8.5.18-0.ta 100% |################################| Time: 0:00:03 529.07 kB/s
yaml-0.1.6-0.t 100% |################################| Time: 0:00:00 532.09 kB/s
zlib-1.2.8-3.t 100% |################################| Time: 0:00:00 548.04 kB/s
libgcc-7.2.0-h 100% |################################| Time: 0:00:00 523.41 kB/s
libiconv-1.15- 100% |################################| Time: 0:00:03 606.23 kB/s
libpng-1.6.22- 100% |################################| Time: 0:00:00 579.81 kB/s
libxcb-1.12-h8 100% |################################| Time: 0:00:00 638.65 kB/s
pcre-8.39-1.ta 100% |################################| Time: 0:00:01 619.63 kB/s
python-2.7.12- 100% |################################| Time: 0:00:18 677.69 kB/s
backports-1.0- 100% |################################| Time: 0:00:00 953.06 kB/s
backports_abc- 100% |################################| Time: 0:00:00   1.20 MB/s
beautifulsoup4 100% |################################| Time: 0:00:00 458.56 kB/s
dbus-1.10.20-0 100% |################################| Time: 0:00:02 555.57 kB/s
decorator-4.0. 100% |################################| Time: 0:00:00   2.49 MB/s
enum34-1.1.6-p 100% |################################| Time: 0:00:00 921.07 kB/s
freetype-2.5.5 100% |################################| Time: 0:00:06 433.13 kB/s
functools32-3. 100% |################################| Time: 0:00:00   1.26 MB/s
glib-2.50.2-1. 100% |################################| Time: 0:00:16 361.10 kB/s
ipython_genuti 100% |################################| Time: 0:00:00 326.48 kB/s
libxml2-2.9.4- 100% |################################| Time: 0:00:13 294.28 kB/s
markupsafe-0.2 100% |################################| Time: 0:00:00 376.16 kB/s
mistune-0.7.4- 100% |################################| Time: 0:00:01 393.87 kB/s
nltk-3.2.1-py2 100% |################################| Time: 0:00:06 295.22 kB/s
numpy-1.11.2-p 100% |################################| Time: 0:00:18 346.04 kB/s
path.py-8.2.1- 100% |################################| Time: 0:00:00 132.93 kB/s
ptyprocess-0.5 100% |################################| Time: 0:00:00 305.77 kB/s
pygments-2.1.3 100% |################################| Time: 0:00:04 289.69 kB/s
pymongo-3.3.0- 100% |################################| Time: 0:00:02 171.89 kB/s
pyparsing-2.1. 100% |################################| Time: 0:00:00 153.55 kB/s
pytz-2016.10-p 100% |################################| Time: 0:00:01 147.06 kB/s
pyyaml-3.12-py 100% |################################| Time: 0:00:01 195.65 kB/s
requests-2.12. 100% |################################| Time: 0:00:02 309.94 kB/s
setuptools-27. 100% |################################| Time: 0:00:01 337.28 kB/s
simplegeneric- 100% |################################| Time: 0:00:00   5.86 MB/s
sip-4.18-py27_ 100% |################################| Time: 0:00:00 489.63 kB/s
six-1.10.0-py2 100% |################################| Time: 0:00:00  10.14 MB/s
unicodecsv-0.1 100% |################################| Time: 0:00:00  15.37 MB/s
wcwidth-0.1.7- 100% |################################| Time: 0:00:00   5.09 MB/s
wheel-0.29.0-p 100% |################################| Time: 0:00:00 565.34 kB/s
xlrd-1.0.0-py2 100% |################################| Time: 0:00:00 419.97 kB/s
zeromq-4.1.5-0 100% |################################| Time: 0:00:16 270.52 kB/s
backports.shut 100% |################################| Time: 0:00:00 510.08 kB/s
clyent-1.2.2-p 100% |################################| Time: 0:00:00 613.19 kB/s
configparser-3 100% |################################| Time: 0:00:00 559.03 kB/s
cycler-0.10.0- 100% |################################| Time: 0:00:00   4.23 MB/s
fontconfig-2.1 100% |################################| Time: 0:00:01 351.49 kB/s
get_terminal_s 100% |################################| Time: 0:00:00   4.24 MB/s
gstreamer-1.8. 100% |################################| Time: 0:00:07 368.44 kB/s
jinja2-2.8-py2 100% |################################| Time: 0:00:01 185.39 kB/s
jsonschema-2.5 100% |################################| Time: 0:00:00 135.51 kB/s
pathlib2-2.1.0 100% |################################| Time: 0:00:00 498.12 kB/s
pexpect-4.0.1- 100% |################################| Time: 0:00:00  83.23 kB/s
pip-9.0.1-py27 100% |################################| Time: 0:00:09 174.59 kB/s
prompt_toolkit 100% |################################| Time: 0:00:01 172.84 kB/s
python-dateuti 100% |################################| Time: 0:00:00 373.96 kB/s
pyzmq-16.0.2-p 100% |################################| Time: 0:00:02 322.33 kB/s
scipy-0.18.1-n 100% |################################| Time: 0:01:29 363.25 kB/s
singledispatch 100% |################################| Time: 0:00:00 449.26 kB/s
ssl_match_host 100% |################################| Time: 0:00:00   1.53 MB/s
traitlets-4.3. 100% |################################| Time: 0:00:00 133.42 kB/s
anaconda-clien 100% |################################| Time: 0:00:01 100.87 kB/s
cairo-1.12.18- 100% |################################| Time: 0:00:02 296.19 kB/s
entrypoints-0. 100% |################################| Time: 0:00:00   2.84 MB/s
gst-plugins-ba 100% |################################| Time: 0:00:07 449.87 kB/s
jupyter_core-4 100% |################################| Time: 0:00:00 167.95 kB/s
pandas-0.19.1- 100% |################################| Time: 0:01:03 246.90 kB/s
pickleshare-0. 100% |################################| Time: 0:00:00 579.01 kB/s
scikit-learn-0 100% |################################| Time: 0:00:38 232.56 kB/s
tornado-4.4.2- 100% |################################| Time: 0:00:04 140.01 kB/s
ipython-5.1.0- 100% |################################| Time: 0:00:05 189.17 kB/s
jupyter_client 100% |################################| Time: 0:00:00 114.47 kB/s
nbformat-4.2.0 100% |################################| Time: 0:00:01  99.19 kB/s
pycairo-1.10.0 100% |################################| Time: 0:00:00 207.15 kB/s
qt-5.6.2-0.tar 100% |################################| Time: 0:02:43 277.77 kB/s
terminado-0.6- 100% |################################| Time: 0:00:00 325.08 kB/s
ipykernel-4.5. 100% |################################| Time: 0:00:02  59.41 kB/s
nbconvert-4.2. 100% |################################| Time: 0:00:02 156.67 kB/s
pyqt-5.6.0-py2 100% |################################| Time: 0:00:11 471.43 kB/s
jupyter_consol 100% |################################| Time: 0:00:00 698.52 kB/s
matplotlib-1.5 100% |################################| Time: 0:00:22 373.96 kB/s
notebook-4.3.0 100% |################################| Time: 0:00:16 338.69 kB/s
qtconsole-4.2. 100% |################################| Time: 0:00:01 133.56 kB/s
seaborn-0.7.1- 100% |################################| Time: 0:00:00 347.93 kB/s
widgetsnbexten 100% |################################| Time: 0:00:04 254.80 kB/s
ipywidgets-5.2 100% |################################| Time: 0:00:00  79.79 kB/s
jupyter-1.0.0- 100% |################################| Time: 0:00:00   2.42 MB/s
nb_anacondaclo 100% |################################| Time: 0:00:00   1.02 MB/s
nb_conda_kerne 100% |################################| Time: 0:00:00  46.93 kB/s
nb_conda-2.0.0 100% |################################| Time: 0:00:00  88.22 kB/s
_nb_ext_conf-0 100% |################################| Time: 0:00:00 632.75 kB/s
nbpresent-3.0. 100% |################################| Time: 0:00:02 190.61 kB/s
An unexpected error has occurred.
Please consider posting the following information to the
conda GitHub issue tracker at:

    https://github.com/conda/conda/issues



Current conda install:

               platform : linux-64
          conda version : 4.3.30
       conda is private : False
      conda-env version : 4.3.30
    conda-build version : 3.0.27
         python version : 3.6.2.final.0
       requests version : 2.18.4
       root environment : /home/snadar/anaconda3  (writable)
    default environment : /home/snadar/anaconda3
       envs directories : /home/snadar/anaconda3/envs
                          /home/snadar/.conda/envs
          package cache : /home/snadar/anaconda3/pkgs
                          /home/snadar/.conda/pkgs
           channel URLs : https://repo.continuum.io/pkgs/main/linux-64
                          https://repo.continuum.io/pkgs/main/noarch
                          https://repo.continuum.io/pkgs/free/linux-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/linux-64
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/linux-64
                          https://repo.continuum.io/pkgs/pro/noarch
            config file : None
             netrc file : None
           offline mode : False
             user-agent : conda/4.3.30 requests/2.18.4 CPython/3.6.2 Linux/4.13.0-16-generic debian/stretch/sid glibc/2.26    
                UID:GID : 1000:1000

`$ /home/snadar/anaconda3/bin/conda-env create -f dand-env-linux.yaml`




    Traceback (most recent call last):
      File "/home/snadar/anaconda3/lib/python3.6/site-packages/conda/exceptions.py", line 640, in conda_exception_handler
        return_value = func(*args, **kwargs)
      File "/home/snadar/anaconda3/lib/python3.6/site-packages/conda_env/cli/main_create.py", line 108, in execute
        installer.install(prefix, pkg_specs, args, env)
      File "/home/snadar/anaconda3/lib/python3.6/site-packages/conda_env/installers/pip.py", line 8, in install
        pip_cmd = pip_args(prefix) + ['install', ] + specs
    TypeError: can only concatenate list (not "NoneType") to list

