Оператор импорта Python распознает пакеты только из определенных каталогов? - PullRequest
0 голосов
/ 24 апреля 2018

Это одна из самых странных проблем, с которыми я столкнулся, и я не могу понять, что является причиной этого.

У меня есть оператор from x import x, и он работает только в определенных файловых каталогах. Например,

из моего каталога userroot

C:\Users\admin>where python
C:\scoop\shims\python.exe

C:\Users\admin>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit 
(AM D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from influxdb import InfluxDBClient
>>> ^Z

Я могу импортироватьпакет просто отлично - однако, когда я выхожу на рабочий стол (который все еще находится отдельно от моего пользовательского каталога)

C:\Users\admin>cd Desktop

C:\Users\admin\Desktop>where python
C:\scoop\shims\python.exe

C:\Users\admin\Desktop>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AM D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from influxdb import InfluxDBClient
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\scoop\apps\python27\current\lib\site-packages\influxdb\__init__.py",
line 9, in <module>
    from .client import InfluxDBClient
  File "C:\scoop\apps\python27\current\lib\site-packages\influxdb\client.py", li
ne 14, in <module>
    import requests
  File "C:\scoop\apps\python27\current\lib\site-packages\requests\__init__.py",
line 43, in <module>
    import urllib3
  File "C:\scoop\apps\python27\current\lib\site-packages\urllib3\__init__.py", l
ine 8, in <module>
    from .connectionpool import (
  File "C:\scoop\apps\python27\current\lib\site-packages\urllib3\connectionpool.
py", line 3, in <module>
    import logging
  File "logging.py", line 4, in <module>
    from influxdb import InfluxDBClient
ImportError: cannot import name InfluxDBClient
>>> ^Z

Так что вход в мой рабочий стол каталога, хотя все еще использующий тот же python.exe, не позволит моемуимпортировать тот же пакет.

Что делает это более странным, если я посмотрю на sys.path

C:\Users\admin\Desktop>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\scoop\\apps\\python27\\current\\python27.zip', 'C:\\scoop\\apps\\pytho
n27\\current\\DLLs', 'C:\\scoop\\apps\\python27\\current\\lib', 'C:\\scoop\\apps
\\python27\\current\\lib\\plat-win', 'C:\\scoop\\apps\\python27\\current\\lib\\l
ib-tk', 'C:\\scoop\\apps\\python27\\current', 'C:\\scoop\\apps\\python27\\curren
t\\lib\\site-packages']
>>> ^Z

А для корневого каталога -

C:\Users\admin\Desktop>cd..

C:\Users\admin>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\scoop\\apps\\python27\\current\\python27.zip', 'C:\\scoop\\apps\\pytho
n27\\current\\DLLs', 'C:\\scoop\\apps\\python27\\current\\lib', 'C:\\scoop\\apps
\\python27\\current\\lib\\plat-win', 'C:\\scoop\\apps\\python27\\current\\lib\\l
ib-tk', 'C:\\scoop\\apps\\python27\\current', 'C:\\scoop\\apps\\python27\\curren
t\\lib\\site-packages']
>>> ^Z

Вы можете видеть, что они точно такие же.Я подумал, что это может быть проблема переменной среды, но почему она будет работать в userroot, а не в useroot/Desktop?И это не похоже на influxdb ошибку, BeautifulSoup делает то же самое.

Это запускается из командной строки с повышенными привилегиями в учетной записи администратора.Я пытался удалить и переустановить Python.Я пробовал оба python2 и python3.Я пытался установить PYTHONPATH.

Есть мысли?

...