如何使用virtualenv的外部库?

时间:2014-10-04 20:10:26

标签: python virtualenv apache-spark

我试图弄清楚如何使用外部库。我有一个在Spark上成功运行的程序,现在我正在尝试导入外部库。我使用virtualenv,每次提交时,spark都会抱怨它无法找到该文件。

以下是我尝试过的众多提交命令之一:

/path/to/spark-1.1.0-bin-hadoop2.4/bin/spark-submit ua_analysis.py --py-files `pwd`/venv/lib/python2.7/site-packages

我尝试使用--py-files标记单独添加文件,我还尝试了以下子目录。

venv/lib
venv/python2.7
venv/lib/python2.7/site-packages/<package_name>

所有这些都会产生以下错误

ImportError: ('No module named <module>', <function subimport at 0x7f287255dc80>, (<module>,))

    org.apache.spark.api.python.PythonRDD$$anon$1.read(PythonRDD.scala:124)
    org.apache.spark.api.python.PythonRDD$$anon$1.<init>(PythonRDD.scala:154)
    org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:87)
....

我还尝试将这些文件复制到pyspark目录,但没有成功。

1 个答案:

答案 0 :(得分:6)

创建虚拟环境时,请将--system-site-packages选项传递给virtualenv

virtualenv --system-site-packages venv

如果您忘记通过选项:

rm venv/lib/python2.7/no-global-site-packages.txt

通过两种方式,您可以在虚拟环境中import system-site-packages