如何在虚拟环境中选择合适的Python版本?

loading...


0

我创建了一个虚拟环境并运行PySpark脚本 . 如果我在MacOS上执行这些步骤,一切正常 . 但是,如果我在Linux(Ubuntu 16)上运行它们,那么就会选择不正确的Python版本 . 当然,我之前在Linux上做过 export PYSPARK_PYTHON=python3 ,但仍然是同样的问题 . 下面我解释所有步骤:

1. edit profile :vim ~/.profile

2. add the code into the file: export PYSPARK_PYTHON=python3

3. execute command:  source ~/.profile

然后我做:

pip3 install --upgrade pip
pip3 install virtualenv
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
tar -xvzf spark-2.4.0-bin-hadoop2.7.tgz && rm spark-2.4.0-bin-hadoop2.7.tgz

virtualenv tes-ve 
source test-ve/bin/activate && pip install -r requirements.txt

如果我在可视化环境中执行 python --version ,我会看到 Python 3.5.2 .

但是,当我使用以下命令运行Spark代码时: sudo /usr/local/spark-2.4.0-bin-hadoop2.7/bin/spark-submit mySpark.py ,我得到 Using Python version 2.7... 这些代码行:

print("Using Python version %s (%s, %s)" % (
    platform.python_version(),
    platform.python_build()[0],
    platform.python_build()[1]))

loading...

1回答

  • 0

    PYSPARK_PYTHON 设置调用's used to execute Python on the slave nodes. There'是一个名为 PYSPARK_DRIVER_PYTHON 的独立环境变量,用于设置驱动程序节点(即最初运行脚本的节点)的调用 . 所以你也需要设置 PYSPARK_DRIVER_PYTHON=python3 .

    编辑

    正如博士指出的那样,由于你使用 sudo 来调用Pyspark提交,你可能会遇到环境问题 . 要尝试的一件事是使用 sudo -E 而不是 sudo . -E 选项将preserve your environment(虽然它并不完美) .

    如果失败,您可以尝试直接设置 spark.pyspark.driver.pythonspark.pyspark.python 选项 . 例如,您可以将所需的值传递给对 spark-submit 的调用:

    sudo /usr/local/spark-2.4.0-bin-hadoop2.7/bin/spark-submit --conf spark.pyspark.driver.python=python3 --conf spark.pyspark.python=python3 mySpark.py
    

    有许多不同的方法可以设置这些选项(有关详细信息,请参阅this doc) . 如果一个人不能工作/对您不方便,请尝试另一个 .

评论

暂时没有评论!