Мне удалось создать простое приложение, использующее инфраструктуру Pico (https://github.com/fergalwalsh/pico). Мой веб-интерфейс без каких-либо трудностей подключается к моему бэкэнду. Ниже приведен мой файл Python, который на данный момент просто возвращает / отображает строку , используя входное значение на стороне клиента, «имя».
from __future__ import absolute_import
import sys
import pico
import numpy as np
# import sklearn
# import pandas as pd
from api2 import aloha
from pico import PicoApp
@pico.expose()
def hello(name):
a = np.arange(15).reshape(3, 5)
# a = np.arrange('data', 'field').reshape(3,5)
return "hello %s, %s" %(name, a)
app = PicoApp()
app.register_module(__name__)
(Он также возвращает массив NumPy просто потому, что я проверяю, что я могу импортировать в файл.)
Все мои пакеты установлены нормально, через Anaconda в /site-packages
, которая находится в каталоге python3.6
.
Как ни странно, приложение работает нормально; он может импортировать NumPy. Это ломается, однако, когда я пытаюсь импортировать панд или SKLearn. Я попытался вручную скопировать и вставить NumPy в /Library/Python/2.7/site-packages
, что фактически разрывает приложение. Но NumPy работает в приложении, когда оно только расположено в /site-packages
Анаконды.
Я пытался изменить app.register(__name__)
на app.register('api')
, то есть имя файла Python (api.py
), основываясь на другом вопросе / ответе здесь. Я также попытался переустановить Pandas с sudo -H pip install pandas
, но все требования уже выполнены.
Это ошибка, которая выдается, когда я пытаюсь включить Панд в api.py
:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/Library/Python/2.7/site-packages/pico/server.py", line 31, in <module>
app = import_string(module_name)
File "/Library/Python/2.7/site-packages/werkzeug/utils.py", line 443, in import_string
sys.exc_info()[2])
File "/Library/Python/2.7/site-packages/werkzeug/utils.py", line 431, in import_string
module = import_string(module_name)
File "/Library/Python/2.7/site-packages/werkzeug/utils.py", line 443, in import_string
sys.exc_info()[2])
File "/Library/Python/2.7/site-packages/werkzeug/utils.py", line 418, in import_string
__import__(import_name)
File "./api.py", line 6, in <module>
import pandas as pd
File "/Library/Python/2.7/site-packages/pandas/__init__.py", line 23, in <module>
from pandas.compat.numpy import *
File "/Library/Python/2.7/site-packages/pandas/compat/numpy/__init__.py", line 24, in <module>
'this pandas version'.format(_np_version))
werkzeug.utils.ImportStringError: import_string() failed for 'api.app'. Possible reasons are:
- missing __init__.py in a package;
- package or module path not included in sys.path;
- duplicated package or module name taking precedence in sys.path;
- missing module, class, function or variable;
Debugged import:
- 'api' not found.
Original exception:
ImportStringError: import_string() failed for 'api'. Possible reasons are:
- missing __init__.py in a package;
- package or module path not included in sys.path;
- duplicated package or module name taking precedence in sys.path;
- missing module, class, function or variable;
Debugged import:
- 'api' not found.
Original exception:
ImportError: this version of pandas is incompatible with numpy < 1.9.0
your numpy version is 1.8.0rc1.
Please upgrade numpy to >= 1.9.0 to use this pandas version
Когда я запускаю which python
, он указывает на /Users/richardscheiwe/anaconda3/bin/python
. Кроме того, у меня установлена NumPy v.1.15, и я не могу найти другие папки NumPy. Когда я пытаюсь переместить версию NumPy на Library/Python/2.7/site-packages
, я получаю эту ошибку:
ImportError:
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: cannot import name multiarray
Думаю, мне нужно как-то указать Python приложения на версию Anaconda Python 3.6, но я не знаю, как это сделать. Pico также доступен в каталоге Anaconda /site-packages
, но там он не указан.
Любая помощь очень ценится. Я искал StackOverflow и GitHub.