气流initdb:未定义符号:Py_GetArgcArgv

时间:2020-03-14 15:07:38

标签: python macos python-wheel

我按照文档安装了Apache-airflow。 https://airflow.apache.org/docs/stable/start.html

当我执行气流initdb时,每次都会发生错误。

x-MacBook-Pro:~ x$ airflow initdb
 ......
import airflow.utils.dag_processing
  File "/Library/Python/3.7/site-packages/airflow/utils/dag_processing.py", line 40, in <module>
    from setproctitle import setproctitle
ImportError: dlopen(/Library/Python/3.7/site-packages/setproctitle.cpython-37m-darwin.so, 2): Symbol not found: _Py_GetArgcArgv
  Referenced from: /Library/Python/3.7/site-packages/setproctitle.cpython-37m-darwin.so
  Expected in: flat namespace
 in /Library/Python/3.7/site-packages/setproctitle.cpython-37m-darwin.so

一个答案表明这是二进制软件包的问题。但是我仍然不知道该如何解决。 这是链接https://github.com/psycopg/psycopg2/issues/807

MacOSX 10.15.3

点20.0.2

Python 3.7.3

9 个答案:

答案 0 :(得分:1)

我在python 3.7中遇到了同样的问题,但是非常适合直接从python页面安装的Python 3.8,创建新环境并在新环境中再次安装apache-airflow,请确保您具有此版本的所有依赖项apache-airflow的问题,并且您没有使用本地环境来避免错误。

答案 1 :(得分:0)

我遇到了与您相同的问题(MAC OS Catalina)。问题出在系统上的两个python版本(Python2.7和Python3.7)上。

$ python -V
Python 2.7
$ pip -V
pip 20.0.2 from /Library/Python/3.7/site-packages/pip (python 3.7)
$ which python
/usr/bin/python
$ which pip
/usr/local/bin/pip

我通过为python添加软链接解决了该问题

$ ln -s /usr/local/bin/python3 /usr/local/bin/python
$ python -V
Python 3.7.7

然后,重新安装apache-airflow。在本地和虚拟环境中为我工作。

答案 2 :(得分:0)

当使用从官方站点安装的python 3.8时,setproctitle 1.1.10模块可在macOS Catalina上按预期工作。

Python 3.8下载:https://www.python.org/downloads/release/python-380/

相关问题:Import issue for setproctitle on Mac OS,

答案 3 :(得分:0)

我在python 3上遇到了同样的问题。尝试创建python 2.7的static Foo aggregateTime(Foo initial, Foo incoming) { return new Foo(incoming.getName(), incoming.getCode(), incoming.getAccount(), initial.getTime() + incoming.getTime()); } 并在其中安装气流。

答案 4 :(得分:0)

当我使用系统(OS)python3解释器,即/usr/bin/python3

时,我遇到了同样的问题

您可以使用自制软件简单地安装python 3.7或3.8(两者均适用):

brew install python@3.8

通过运行/usr/local/bin/python3确保python3现在指向which python3

然后安装apache-airflow:

python3 -m venv .venv
pip install apache-airflow
airflow initdb

答案 5 :(得分:0)

Python 3.7.3导致了此问题。 我升级到Python 3.7.7,问题已解决。

mkvirtualenv -p python3.7.7 airflow
workon airflow
pip install apache-airflow
airflow initdb

答案 6 :(得分:0)

我当然有同样的问题。 macOS 10.15.2。

我已全局安装python 3.8。我做了一些研究,发现原因是c库m-darwin.so的编译方式。

此步骤可帮助我解决问题:

  1. 已安装pyenv
brew install pyenv
  1. 降级为python 3.7.0
pyenv install 3.7.0
  1. 全局设置python 3.7.0
pyenv global 3.7.0
  1. 跑步python3 -V应该会给您:
Python 3.7.0
  1. 使用virtualenv重新创建我的项目环境:
python3 -m virtualenv --python=python3.7 my awesome_env
  1. 激活了我的环境并安装了所有依赖项,并且它发出了呼喊声。
source awesome_env/bin/activate
pip install -r requirements.txt

我认为整个过程都会触发库的重新编译。

答案 7 :(得分:0)

如果您像我一样使用 3.7.x 并使用 pipenv,运行最新补丁会有所帮助。

brew install pyenv
pyenv install 3.7.10
pyenv global 3.7.10
pipenv --rm
pipenv install --dev --python 3.7.10

答案 8 :(得分:0)

此处的故障排除部分对此错误进行了更全面的解释:https://airflow.apache.org/docs/apache-airflow/stable/installation.html

就我而言,我通过自制软件安装了 3.8.2 时遇到了问题,而通过 pyenv 安装了 3.9.4 就解决了问题。