如何在虚拟环境中选择合适的Python版本?
我创建了一个虚拟环境并运行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]))
2 years ago
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.python
和spark.pyspark.python
选项 . 例如,您可以将所需的值传递给对spark-submit
的调用:有许多不同的方法可以设置这些选项(有关详细信息,请参阅this doc) . 如果一个人不能工作/对您不方便,请尝试另一个 .