【问题标题】:airflow initdb: undefined symbol: Py_GetArgcArgv气流initdb:未定义符号:Py_GetArgcArgv
【发布时间】:2020-06-26 06:39:12
【问题描述】:

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

当我执行airflow 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

【问题讨论】:

  • 你有没有解决这个问题?
  • @dvakhil 不,它还在。

标签: python macos python-wheel


【解决方案1】:

我在使用系统(OS)python3解释器时遇到了同样的问题,即/usr/bin/python3

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

brew install python@3.8

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

然后安装apache-airflow:

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    当然我也有同样的问题。 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. 激活了我的 env 并安装了所有依赖项,它成功了。
    source awesome_env/bin/activate
    pip install -r requirements.txt
    

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

    【讨论】:

    • 我认为您遇到的问题是因为您的Python3.8.x 版本是x&lt;5
    【解决方案4】:

    如果您与 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
    

    【讨论】:

      【解决方案5】:

      我和你有同样的问题(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。在本地和虚拟环境中都为我工作。

      【讨论】:

        【解决方案6】:

        使用从官方网站安装的 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,

        【讨论】:

        • 欢迎提供指向解决方案的链接,但请确保您的答案在没有它的情况下有用:在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在它,然后引用如果目标页面不可用,您链接到的页面的最相关部分。可能会删除仅是链接的答案。
        • 感谢您的帮助 abhiarora
        【解决方案7】:

        我在使用 python 3 时遇到了同样的问题。尝试创建 python 2.7 的 virtualenv 并在其中安装气流。

        【讨论】:

          【解决方案8】:

          Python 3.7.3 导致了这个问题。 我升级到 Python 3.7.7 并解决了问题。

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

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-01-28
              • 2016-12-21
              • 2020-05-05
              • 1970-01-01
              • 1970-01-01
              • 2020-03-16
              • 2017-12-27
              相关资源
              最近更新 更多