使Python项目在另一个Mac上工作

使Python项目在另一个Mac上工作,python,Python,我有一个python项目,其中包含一系列模块和目录 它作为CLI运行,现在我希望其他用户能够在其系统上运行它 我使用以下方式导出了我的conda环境: conda env export --file environment.yml 它看起来像这样: name: ds channels: - conda-forge - defaults dependencies: - _pytorch_select=0.1=cpu_0 - appnope=0.1.0=py37hc8dfbb8_

我有一个python项目,其中包含一系列模块和目录

它作为CLI运行,现在我希望其他用户能够在其系统上运行它

我使用以下方式导出了我的conda环境:

conda env export  --file environment.yml
它看起来像这样:

name: ds
channels:
  - conda-forge
  - defaults
dependencies:
  - _pytorch_select=0.1=cpu_0
  - appnope=0.1.0=py37hc8dfbb8_1001
  - attrs=19.3.0=py_0
  - backcall=0.1.0=py_0
  - blas=1.0=mkl
  - bleach=3.1.4=pyh9f0ad1d_0
  - bzip2=1.0.8=h0b31af3_2
  - ca-certificates=2020.6.20=hecda079_0
  - cairo=1.16.0=hec6a9b0_1003
  - certifi=2020.6.20=py37hc8dfbb8_0
  - cffi=1.14.0=py37h356ff06_0
  - chardet=3.0.4=py37hc8dfbb8_1006
  - click=7.1.2=pyh9f0ad1d_0
  - curl=7.69.1=h2d98d24_0
  - cycler=0.10.0=py_2
  - dbus=1.13.6=h2f22bb5_0
  - decorator=4.4.2=py_0
  - defusedxml=0.6.0=py_0
  - entrypoints=0.3=py37hc8dfbb8_1001
  - et_xmlfile=1.0.1=py_1001
  - expat=2.2.9=h4a8c4bd_2
  - ffmpeg=4.2=h5c2b479_0
  - fontconfig=2.13.1=h6b1039f_1001
  - freetype=2.10.1=h8da9a1a_0
  - gettext=0.19.8.1=h46ab8bc_1002
  - ghostscript=9.22=h0a44026_1001
  - giflib=5.2.1=h0b31af3_2
  - glib=2.64.2=h577aef8_0
  - gmp=6.2.0=h4a8c4bd_2
  - gnutls=3.6.5=h53004b3_1002
  - graphite2=1.3.13=h12caacf_1001
  - harfbuzz=2.4.0=hd8d2a14_3
  - hdf5=1.10.6=nompi_h3e39495_100
  - icu=64.2=h6de7cb9_1
  - importlib-metadata=1.6.0=py37hc8dfbb8_0
  - importlib_metadata=1.6.0=0
  - ipykernel=5.2.1=py37h43977f1_0
  - ipython=7.13.0=py37hc8dfbb8_2
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.5.1=py_0
  - jasper=1.900.1=h636a363_1006
  - jdcal=1.4.1=py_0
  - jedi=0.17.0=py37hc8dfbb8_0
  - jinja2=2.11.2=pyh9f0ad1d_0
  - joblib=0.14.1=py_0
  - jpeg=9c=h1de35cc_1001
  - jsonschema=3.2.0=py37hc8dfbb8_1
  - jupyter=1.0.0=py_2
  - jupyter_client=6.1.3=py_0
  - jupyter_console=6.1.0=py_1
  - jupyter_core=4.6.3=py37hc8dfbb8_1
  - kiwisolver=1.2.0=py37ha1cc60f_0
  - krb5=1.17.1=h1752a42_0
  - lame=3.100=h1de35cc_1001
  - libblas=3.8.0=14_mkl
  - libcblas=3.8.0=14_mkl
  - libclang=9.0.1=default_hf57f61e_0
  - libcurl=7.69.1=hc0b9707_0
  - libcxx=9.0.1=1
  - libedit=3.1.20170329=hcfe32e1_1001
  - libffi=3.2.1=h4a8c4bd_1007
  - libgfortran=4.0.0=2
  - libiconv=1.15=h0b31af3_1006
  - liblapack=3.8.0=14_mkl
  - liblapacke=3.8.0=14_mkl
  - libllvm9=9.0.1=h7475705_1
  - libopencv=4.2.0=py37_6
  - libpng=1.6.37=hbbe82c9_1
  - libpq=12.2=h489d428_1
  - libsodium=1.0.17=h01d97ff_0
  - libssh2=1.8.2=hcdc9a53_2
  - libtiff=4.1.0=ha78913b_3
  - libwebp=1.0.2=hd3bf737_5
  - libxml2=2.9.10=h53d96d6_0
  - libxslt=1.1.33=h320ff13_0
  - llvm-openmp=10.0.0=h28b9765_0
  - lxml=4.5.1=py37heb1707f_0
  - lz4-c=1.9.2=h4a8c4bd_0
  - markupsafe=1.1.1=py37h9bfed18_1
  - matplotlib-base=3.2.1=py37hddda452_0
  - mistune=0.8.4=py37h9bfed18_1001
  - mkl=2019.5=281
  - mkl-service=2.3.0=py37h0b31af3_0
  - nbconvert=5.6.1=py37hc8dfbb8_1
  - nbformat=5.0.6=py_0
  - ncurses=6.1=h0a44026_1002
  - nettle=3.4.1=h3efe00b_1002
  - ninja=1.10.0=ha1b3eb9_0
  - notebook=6.0.3=py37_0
  - nspr=4.20=h0a44026_1000
  - nss=3.47=hc0980d9_0
  - numpy=1.18.1=py37h7687784_1
  - opencv=4.2.0=py37_6
  - openh264=1.8.0=hd9629dc_1000
  - openjpeg=2.3.1=h254dc36_3
  - openpyxl=3.0.3=py_0
  - openssl=1.1.1g=h0b31af3_0
  - pandas=1.0.3=py37h94625e5_1
  - pandoc=2.9.2.1=0
  - pandocfilters=1.4.2=py_1
  - parso=0.7.0=pyh9f0ad1d_0
  - patsy=0.5.1=py_0
  - pcre=8.44=h4a8c4bd_0
  - pdfminer.six=20191020=py_2
  - pexpect=4.8.0=py37hc8dfbb8_1
  - pickleshare=0.7.5=py37hc8dfbb8_1001
  - pip=20.0.2=py_2
  - pixman=0.38.0=h01d97ff_1003
  - poppler=0.87.0=h3232a60_1
  - poppler-data=0.4.9=1
  - prometheus_client=0.7.1=py_0
  - prompt-toolkit=3.0.5=py_0
  - prompt_toolkit=3.0.5=0
  - ptyprocess=0.6.0=py_1001
  - py-opencv=4.2.0=py37h43977f1_6
  - pycparser=2.20=py_0
  - pycryptodome=3.9.7=py37h51495b9_1
  - pygments=2.6.1=py_0
  - pyparsing=2.4.7=pyh9f0ad1d_0
  - pypdf2=1.26.0=py_2
  - pyqt=5.12.3=py37he22c54c_1
  - pyrsistent=0.16.0=py37h9bfed18_0
  - python=3.7.6=h90870a6_5_cpython
  - python-dateutil=2.8.1=py_0
  - python_abi=3.7=1_cp37m
  - pytorch=1.4.0=cpu_py37hf9bb1df_0
  - pytz=2019.3=py_0
  - pyyaml=5.3.1=py37h9bfed18_0
  - pyzmq=19.0.0=py37haec44b1_1
  - qt=5.12.5=h514805e_3
  - qtconsole=4.7.3=pyh9f0ad1d_0
  - qtpy=1.9.0=py_0
  - readline=8.0=hcfe32e1_0
  - scikit-learn=0.22.2.post1=py37h3dc85bc_0
  - scipy=1.4.1=py37hce1b9e5_3
  - seaborn=0.10.1=py_0
  - send2trash=1.5.0=py_0
  - setuptools=46.1.3=py37hc8dfbb8_0
  - six=1.14.0=py_1
  - sortedcontainers=2.1.0=py_0
  - sqlite=3.30.1=h93121df_0
  - statsmodels=0.11.1=py37h9bfed18_1
  - terminado=0.8.3=py37hc8dfbb8_1
  - testpath=0.4.4=py_0
  - tk=8.6.10=hbbe82c9_0
  - tornado=6.0.4=py37h9bfed18_1
  - traitlets=4.3.3=py37hc8dfbb8_1
  - wcwidth=0.1.9=pyh9f0ad1d_0
  - webencodings=0.5.1=py_1
  - wheel=0.34.2=py_1
  - widgetsnbextension=3.5.1=py37_0
  - x264=1!152.20180806=h1de35cc_0
  - xlrd=1.2.0=py_0
  - xz=5.2.5=h0b31af3_0
  - yaml=0.2.4=h0b31af3_0
  - zeromq=4.3.2=h6de7cb9_2
  - zipp=3.1.0=py_0
  - zlib=1.2.11=h0b31af3_1006
  - zstd=1.4.4=h4b3e974_3
  - pip:
    - distro==1.5.0
    - pdftotext==2.1.4
    - pyqt5-sip==4.19.18
    - pyqtwebengine==5.12.1
    - tabula-py==2.1.0
prefix: /anaconda3/envs/ds
现在我的问题是,我是否可以要求新用户只需获取这个environment.yml文件并运行:

conda env create -f environment.yml 
在他们的终端中,它会同时安装Python版本(3.7.6)和anaconda吗?还是他们首先必须分别安装Python 3.7.6和anaconda,然后运行上面的environment.yml文件

此外,mac os版本是否会影响上述软件包在不同系统上的功能

我知道docker负责操作系统版本的所有工作,但不能使用docker,我的项目要求用户输入几个命令行参数并传递他们的数据目录,因此它不能只是一个文件,他们单击后所有内容都会运行。他们需要输入参数


这就是为什么Feel要求他们安装环境可能会复制相同的env,并且python脚本可以在他们的系统中运行

您必须安装一些Conda,您可以使用它来获得最基本的基本功能。所需的Python解释器在YAML文件中定义,并将根据需要安装。Miniconda已经包含了一个用于自身功能的裸体Python解释器。

谢谢。因此,请安装miniconda,然后要求用户在其终端中运行上述conda create环境。你认为不同的macOS会影响我的系统吗?除非你没有使用某些特定的macOS API,这些API可能会在版本中发生变化,否则这应该不会是一个问题。但你得测试一下才能确定。我刚刚看到anaconda网站上的miniconda可用于MacOS上的Python3.8。我正在我的环境中使用3.7.6。是否可以>当创建环境时,将为环境下载Python 3.7 ok。。只是确认一下——迷你康达套餐是3.8版的。但是它将使用的python是3.7.6,正如在下载3.7.6的环境中提到的那样。这是否意味着我需要两个python版本?顺便说一句,有点离题:“我的项目要求用户输入几个命令行参数”。。。在docker文件中,您可以将程序设置为
入口点
,然后可以使用
docker run
传递参数。只是想让你知道,在另一种情况下,Docker可能适合你。我知道Docker可以做这件事。这就是我提到它的原因。但我不能在内部使用docker