Проблема с настройкой прокси-переменных в файле .bat (результаты отличаются в cmd и batch) - PullRequest
0 голосов
/ 28 февраля 2019

Описание проблемы

Я пытаюсь создать среду conda из файла .yml в файле .bat.Так как я делаю это в своей компании, необходимо настроить прокси.Когда я делаю это в командном окне, среда успешно создается.Однако, когда в файле .bat возникает исключение, и conda предоставляет отчет об ошибке для отправки.

Этот файл .bat, который я создаю, очень нужен, поэтому мои вопросы:

Существуют ли различия в импорте между запуском этого процесса в пакетном режиме и cmd, которые не позволяют мне получить это из файла .bat?Что мне нужно сделать, чтобы запустить этот процесс для файла .bat?

Примеры кода для воспроизведения проблемы:

1,В командном окне

В cmd, если я запускаю следующие команды, я могу получить мой результат , который создает среду, специфичную для файла .yml (только образцы):

set https_proxy=https://username:password@proxy:port

conda env create -f environment-sample.yml

2.В .bat файле

В .bat, запустив файл, содержащий следующий код, я получаю сообщение об ошибке, которое будет представлено ниже:

REM Using Delayed Expansion because this code will be inside an IF statement on .bat
setlocal EnableDelayedExpansion

set /p login="Login: "
set /p password="Password: "
set https_proxy=https://!login!:!password!@proxy:port

conda env create -f environment.yml

ОШИБКАСООБЩЕНИЕ ВОЗВРАЩЕНО:

Collecting package metadata: failed

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 412, in send
        conn = self.get_connection(request.url, proxies)
      File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 305, in get_connection
        proxy_url = parse_url(proxy)
      File "C:\Anaconda3\lib\site-packages\urllib3\util\url.py", line 199, in parse_url
        raise LocationParseError(url)
    urllib3.exceptions.LocationParseError: Failed to parse: lnx237in.sjk.emb:9090

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "C:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1002, in __call__
        return func(*args, **kwargs)
      File "C:\Anaconda3\lib\site-packages\conda_env\cli\main.py", line 73, in do_call
        exit_code = getattr(module, func_name)(args, parser)
      File "C:\Anaconda3\lib\site-packages\conda_env\cli\main_create.py", line 106, in execute
        installer.install(prefix, pkg_specs, args, env)
      File "C:\Anaconda3\lib\site-packages\conda_env\installers\conda.py", line 27, in install
        unlink_link_transaction = solver.solve_for_transaction(prune=getattr(args, 'prune', False))
      File "C:\Anaconda3\lib\site-packages\conda\core\solve.py", line 107, in solve_for_transaction
        force_remove, force_reinstall)
      File "C:\Anaconda3\lib\site-packages\conda\core\solve.py", line 145, in solve_for_diff
        force_remove)
      File "C:\Anaconda3\lib\site-packages\conda\core\solve.py", line 235, in solve_final_state
        ssc = self._collect_all_metadata(ssc)
      File "C:\Anaconda3\lib\site-packages\conda\common\io.py", line 85, in decorated
        return f(*args, **kwds)
      File "C:\Anaconda3\lib\site-packages\conda\core\solve.py", line 286, in _collect_all_metadata
        index, r = self._prepare(prepared_specs)
      File "C:\Anaconda3\lib\site-packages\conda\core\solve.py", line 678, in _prepare
        self.subdirs, prepared_specs)
      File "C:\Anaconda3\lib\site-packages\conda\core\index.py", line 213, in get_reduced_index
        new_records = query_all(spec)
      File "C:\Anaconda3\lib\site-packages\conda\core\index.py", line 176, in query_all
        return tuple(concat(future.result() for future in as_completed(futures)))
      File "C:\Anaconda3\lib\site-packages\conda\core\subdir_data.py", line 93, in query
        self.load()
      File "C:\Anaconda3\lib\site-packages\conda\core\subdir_data.py", line 147, in load
        _internal_state = self._load()
      File "C:\Anaconda3\lib\site-packages\conda\core\subdir_data.py", line 218, in _load
        mod_etag_headers.get('_mod'))
      File "C:\Anaconda3\lib\site-packages\conda\core\subdir_data.py", line 429, in fetch_repodata_remote_request
        timeout=timeout)
      File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 546, in get
        return self.request('GET', url, **kwargs)
      File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 533, in request
        resp = self.send(prep, **send_kwargs)
      File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 646, in send
        r = adapter.send(request, **kwargs)
      File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 414, in send
        raise InvalidURL(e, request=request)
    requests.exceptions.InvalidURL: Failed to parse: lnx237in.sjk.emb:9090

`$ C:\Anaconda3\Scripts\conda-env-script.py create -f environment.yml`

  environment variables:
                 CIO_TEST=<not set>
                CLASSPATH=C:\Program Files\Java\jdk1.8.0_51\lib\tools.jar
  CONDA_AUTO_UPDATE_CONDA=false
                CONDA_EXE=C:\Anaconda3\Scripts\conda.exe
               CONDA_ROOT=C:\Anaconda3
              CONDA_SHLVL=0
                 HOMEPATH=\Users\MFINACI
              HTTPS_PROXY=<set>
      MIC_LD_LIBRARY_PATH=C:\Program Files (x86)\Common Files\Intel\Shared
                          Libraries\compiler\lib\mic
                     PATH=C:\Anaconda3\;C:\Anaconda3\Library\mingw-w64\bin;C:\Anaconda3\Library\
                          usr\bin;C:\Anaconda3\Library\bin;C:\Anaconda3\Scripts;C:\Anaconda3\bin
                          ;C:\Anaconda3\condabin;C:\Anaconda3;C:\Anaconda3\Library\mingw-w64\bin
                          ;C:\Anaconda3\Library\usr\bin;C:\Anaconda3\Library\bin;C:\Anaconda3\Sc
                          ripts;C:\ProgramData\Oracle\Java\javapath;C:\Program Files
                          (x86)\VNI\imsl\fnl710\winin140x64\lib;C:\Program Files (x86)\Common
                          Files\Microsoft Shared\VSA\10.0\VsaEnv;C:\Program Files (x86)\Common
                          Files\Intel\Shared Libraries\redist\intel64\mpirt;C:\Program Files
                          (x86)\Common Files\Intel\Shared
                          Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common
                          Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files
                          (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;C:\Orac
                          le\product\11.2.0\client_32\bin;C:\Oracle\product\11.2.0\client_64\bin
                          ;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS
                          Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Win
                          dows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R)
                          Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R)
                          Management Engine Components\DAL;C:\Program Files\Intel\Intel(R)
                          Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R)
                          Management Engine Components\IPT;c:\Program Files (x86)\Microsoft SQL
                          Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL
                          Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL
                          Server\100\DTS\Binn\;C:\Program Files\Microsoft Windows Performance
                          Toolkit\;C:\Program Files\Java\jdk1.8.0_51\bin;C:\Program Files\Tortoi
                          seSVN\bin;C:\Users\MFINACI\AppData\Local\Programs\Microsoft VS
                          Code\bin;C:\Users\MFINACI\AppData\Local\Programs\Git\cmd
             PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
         PYTHONIOENCODING=1252
       REQUESTS_CA_BUNDLE=<not set>
         SSF_LIBRARY_PATH=C:\Program Files (x86)\SAP\FrontEnd\SecureLogin\lib\sapcrypto.dll
            SSL_CERT_FILE=<not set>

     active environment : None
            shell level : 0
       user config file : C:\Users\MFINACI\.condarc
 populated config files : C:\Users\MFINACI\.condarc
          conda version : 4.6.7
    conda-build version : 3.10.5
         python version : 3.7.2.final.0
       base environment : C:\Anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Anaconda3\pkgs
                          C:\Users\MFINACI\.conda\pkgs
                          C:\Users\MFINACI\AppData\Local\conda\conda\pkgs
       envs directories : C:\Anaconda3\envs
                          C:\Users\MFINACI\.conda\envs
                          C:\Users\MFINACI\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.6.7 requests/2.21.0 CPython/3.7.2 Windows/7 Windows/6.1.7601
          administrator : False
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?

[y/N]:

Попытки понять проблему

Я проверил, правильно ли назначены переменные и они ли они.Я сделал это в основном "повторяя" переменные.Результат на экране, который я получил, комментируя первую строку кода (REM @echo off), выглядит следующим образом (Изменение полного пути, чтобы сделать его чище):

C:\Users\MFINACI>set /p login="Login: "
Login: userexample

C:\Users\MFINACI>echo !login!
userexample

C:\Users\MFINACI>set /p password="Password: "
Password: passwordexample

C:\Users\MFINACI>echo !password!
passwordexample

C:\Users\MFINACI>set https_proxy=https://!login!:!password!@lnx237in.sjk.emb:9090

C:\Users\MFINACI>echo !https_proxy!
https://userexample:passwordexample@lnx237in.sjk.emb:9090

Также пытался найти похожие проблемы в сообществе, однако,Ни один из них не представляет проблему успешного получения результатов в cmd, а не в файле .bat.Не могли бы вы помочь мне?

Это мой первый вопрос, я действительно старался не задавать дубликаты и уважать правила сообщества.Извините, если я сделал что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...