不能 运行 MLflow 基于网络的用户界面

Can't run MLflow web-based user interface

我已经安装了 MLflow on Ubuntu Server 18.04 LTS, in a virtual environment (Python 3), using its Quickstart documentation:

$ python3 -m venv mlflow
$ source /home/emre/mlflow/bin/activate
$ pip install mlflow

在安装期间给出了以下输出:

Collecting mlflow
  Downloading https://files.pythonhosted.org/packages/e8/b3/cf358e182be34a62fcd6843e5df793f278bd9d24f78f565509cb927c6a22/mlflow-0.1.0.tar.gz (4.3MB)
    100% |████████████████████████████████| 4.3MB 323kB/s
Collecting Flask (from mlflow)
  Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
    100% |████████████████████████████████| 92kB 9.4MB/s
Collecting awscli (from mlflow)
  Downloading https://files.pythonhosted.org/packages/ba/32/d6d254f6ccc2ed21f02d81f38709ff06feca9cbdb2e68ea90635fa483a73/awscli-1.15.46-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 1.0MB/s
Collecting boto3 (from mlflow)
  Downloading https://files.pythonhosted.org/packages/24/e0/a98898b94d8093bbd8fd4576fb2e89620adac1e24a2bfc28d11c4ce29a5b/boto3-1.7.46-py2.py3-none-any.whl (128kB)
    100% |████████████████████████████████| 133kB 8.8MB/s
Collecting click>=6.7 (from mlflow)
  Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 9.3MB/s
Collecting databricks-cli (from mlflow)
  Downloading https://files.pythonhosted.org/packages/58/78/4bda6f29a091ab7b0ad29efdba2491e5d0b56bd09d608857e6f0b799be48/databricks-cli-0.7.2.tar.gz
Collecting gitpython (from mlflow)
  Downloading https://files.pythonhosted.org/packages/ac/c9/96d7c86c623cb065976e58c0f4898170507724d6b4be872891d763d686f4/GitPython-2.1.10-py2.py3-none-any.whl (449kB)
    100% |████████████████████████████████| 450kB 2.9MB/s
Collecting numpy (from mlflow)
  Downloading https://files.pythonhosted.org/packages/68/1e/116ad560de97694e2d0c1843a7a0075cc9f49e922454d32f49a80eb6f1f2/numpy-1.14.5-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    100% |████████████████████████████████| 12.2MB 110kB/s
Collecting pandas (from mlflow)
  Downloading https://files.pythonhosted.org/packages/57/eb/6ab533ea8e35e7dd159af6922ac1123d4565d89f3926ad9a6aa46530978f/pandas-0.23.1-cp36-cp36m-manylinux1_x86_64.whl (11.8MB)
    100% |████████████████████████████████| 11.8MB 116kB/s
Collecting protobuf (from mlflow)
  Downloading https://files.pythonhosted.org/packages/fc/f0/db040681187496d10ac50ad167a8fd5f953d115b16a7085e19193a6abfd2/protobuf-3.6.0-cp36-cp36m-manylinux1_x86_64.whl (7.1MB)
    100% |████████████████████████████████| 7.1MB 177kB/s
Collecting pygal (from mlflow)
  Downloading https://files.pythonhosted.org/packages/5f/b7/201c9254ac0d2b8ffa3bb2d528d23a4130876d9ba90bc28e99633f323f17/pygal-2.4.0-py2.py3-none-any.whl (127kB)
    100% |████████████████████████████████| 133kB 9.7MB/s
Collecting python-dateutil (from mlflow)
  Downloading https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl (211kB)
    100% |████████████████████████████████| 215kB 6.0MB/s
Collecting pyyaml (from mlflow)
  Downloading https://files.pythonhosted.org/packages/10/7d/6efe0bd69580fecd40adf47ebaf8d807238308ccb851f0549881fa7605aa/PyYAML-4.1.tar.gz (153kB)
    100% |████████████████████████████████| 153kB 7.8MB/s
Collecting querystring_parser (from mlflow)
  Downloading https://files.pythonhosted.org/packages/57/64/3086a9a991ff3aca7b769f5b0b51ff8445a06337ae2c58f215bcee48f527/querystring_parser-1.2.3.tar.gz
Collecting requests>=2.17.3 (from mlflow)
  Downloading https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (91kB)
    100% |████████████████████████████████| 92kB 8.2MB/s
Collecting scikit-learn (from mlflow)
  Downloading https://files.pythonhosted.org/packages/3d/2d/9fbc7baa5f44bc9e88ffb7ed32721b879bfa416573e85031e16f52569bc9/scikit_learn-0.19.1-cp36-cp36m-manylinux1_x86_64.whl (12.4MB)
    100% |████████████████████████████████| 12.4MB 108kB/s
Collecting scipy (from mlflow)
  Downloading https://files.pythonhosted.org/packages/a8/0b/f163da98d3a01b3e0ef1cab8dd2123c34aee2bafbb1c5bffa354cc8a1730/scipy-1.1.0-cp36-cp36m-manylinux1_x86_64.whl (31.2MB)
    100% |████████████████████████████████| 31.2MB 42kB/s
Collecting six>=1.10.0 (from mlflow)
  Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting uuid (from mlflow)
  Downloading https://files.pythonhosted.org/packages/ce/63/f42f5aa951ebf2c8dac81f77a8edcc1c218640a2a35a03b9ff2d4aa64c3d/uuid-1.30.tar.gz
Collecting zipstream (from mlflow)
  Downloading https://files.pythonhosted.org/packages/1a/a4/58f0709cef999db1539960aa2ae77100dc800ebb8abb7afc97a1398dfb2f/zipstream-1.1.4.tar.gz
Collecting itsdangerous>=0.24 (from Flask->mlflow)
  Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 10.4MB/s
Collecting Werkzeug>=0.14 (from Flask->mlflow)
  Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
    100% |████████████████████████████████| 327kB 4.0MB/s
Collecting Jinja2>=2.10 (from Flask->mlflow)
  Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)
    100% |████████████████████████████████| 133kB 8.2MB/s
Collecting rsa<=3.5.0,>=3.1.2 (from awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/e1/ae/baedc9cb175552e95f3395c43055a6a5e125ae4d48a1d7a924baca83e92e/rsa-3.4.2-py2.py3-none-any.whl (46kB)
    100% |████████████████████████████████| 51kB 10.5MB/s
Collecting botocore==1.10.46 (from awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/b4/04/ddaad5574f70a539d106e8d53b4685e3de4387de7a16884a95459f8c7691/botocore-1.10.46-py2.py3-none-any.whl (4.4MB)
    100% |████████████████████████████████| 4.4MB 314kB/s
Collecting s3transfer<0.2.0,>=0.1.12 (from awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/d7/14/2a0004d487464d120c9fb85313a75cd3d71a7506955be458eebfe19a6b1d/s3transfer-0.1.13-py2.py3-none-any.whl (59kB)
    100% |████████████████████████████████| 61kB 10.6MB/s
Collecting colorama<=0.3.9,>=0.2.5 (from awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl
Collecting docutils>=0.10 (from awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl (543kB)
    100% |████████████████████████████████| 552kB 2.5MB/s
Collecting jmespath<1.0.0,>=0.7.1 (from boto3->mlflow)
  Downloading https://files.pythonhosted.org/packages/b7/31/05c8d001f7f87f0f07289a5fc0fc3832e9a57f2dbd4d3b0fee70e0d51365/jmespath-0.9.3-py2.py3-none-any.whl
Collecting configparser>=0.3.5 (from databricks-cli->mlflow)
  Downloading https://files.pythonhosted.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz
Collecting tabulate>=0.7.7 (from databricks-cli->mlflow)
  Downloading https://files.pythonhosted.org/packages/12/c2/11d6845db5edf1295bc08b2f488cf5937806586afe42936c3f34c097ebdc/tabulate-0.8.2.tar.gz (45kB)
    100% |████████████████████████████████| 51kB 7.9MB/s
Collecting gitdb2>=2.0.0 (from gitpython->mlflow)
  Downloading https://files.pythonhosted.org/packages/e0/95/c772c13b7c5740ec1a0924250e6defbf5dfdaee76a50d1c47f9c51f1cabb/gitdb2-2.0.3-py2.py3-none-any.whl (63kB)
    100% |████████████████████████████████| 71kB 11.2MB/s
Collecting pytz>=2011k (from pandas->mlflow)
  Downloading https://files.pythonhosted.org/packages/dc/83/15f7833b70d3e067ca91467ca245bae0f6fe56ddc7451aa0dc5606b120f2/pytz-2018.4-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 421kB/s
Requirement already satisfied: setuptools in ./mlflow/lib/python3.6/site-packages (from protobuf->mlflow)
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.17.3->mlflow)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 8.7MB/s
Collecting idna<2.8,>=2.5 (from requests>=2.17.3->mlflow)
  Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 10.3MB/s
Collecting urllib3<1.24,>=1.21.1 (from requests>=2.17.3->mlflow)
  Downloading https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 8.3MB/s
Collecting certifi>=2017.4.17 (from requests>=2.17.3->mlflow)
  Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl (150kB)
    100% |████████████████████████████████| 153kB 8.0MB/s
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->Flask->mlflow)
  Downloading https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli->mlflow)
  Downloading https://files.pythonhosted.org/packages/a0/70/2c27740f08e477499ce19eefe05dbcae6f19fdc49e9e82ce4768be0643b9/pyasn1-0.4.3-py2.py3-none-any.whl (72kB)
    100% |████████████████████████████████| 81kB 10.9MB/s
Collecting smmap2>=2.0.0 (from gitdb2>=2.0.0->gitpython->mlflow)
  Downloading https://files.pythonhosted.org/packages/e3/59/4e22f692e65f5f9271252a8e63f04ce4ad561d4e06192478ee48dfac9611/smmap2-2.0.3-py2.py3-none-any.whl
Building wheels for collected packages: mlflow, databricks-cli, pyyaml, querystring-parser, uuid, zipstream, itsdangerous, configparser, tabulate, MarkupSafe
  Running setup.py bdist_wheel for mlflow ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/mlflow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp10fdrz2ypip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for mlflow
  Running setup.py clean for mlflow
  Running setup.py bdist_wheel for databricks-cli ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/databricks-cli/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpy_2acqi3pip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for databricks-cli
  Running setup.py clean for databricks-cli
  Running setup.py bdist_wheel for pyyaml ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/pyyaml/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp4bs2fwrtpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for pyyaml
  Running setup.py clean for pyyaml
  Running setup.py bdist_wheel for querystring-parser ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/querystring-parser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp_cnm9w_tpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for querystring-parser
  Running setup.py clean for querystring-parser
  Running setup.py bdist_wheel for uuid ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/uuid/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpenr2igaxpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for uuid
  Running setup.py clean for uuid
  Running setup.py bdist_wheel for zipstream ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/zipstream/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpnzsjh5e2pip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for zipstream
  Running setup.py clean for zipstream
  Running setup.py bdist_wheel for itsdangerous ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/itsdangerous/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp7imi3zv2pip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for itsdangerous
  Running setup.py clean for itsdangerous
  Running setup.py bdist_wheel for configparser ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/configparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpyk9qtmi1pip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for configparser
  Running setup.py clean for configparser
  Running setup.py bdist_wheel for tabulate ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/tabulate/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpjim2qr00pip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for tabulate
  Running setup.py clean for tabulate
  Running setup.py bdist_wheel for MarkupSafe ... error
  Complete output from command /home/emre/mlflow/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-s7vrp5z7/MarkupSafe/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpsdpdd8ulpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for MarkupSafe
  Running setup.py clean for MarkupSafe
Failed to build mlflow databricks-cli pyyaml querystring-parser uuid zipstream itsdangerous configparser tabulate MarkupSafe
Installing collected packages: click, itsdangerous, Werkzeug, MarkupSafe, Jinja2, Flask, pyasn1, rsa, jmespath, six, python-dateutil, docutils, botocore, s3transfer, colorama, pyyaml, awscli, boto3, configparser, chardet, idna, urllib3, certifi, requests, tabulate, databricks-cli, smmap2, gitdb2, gitpython, numpy, pytz, pandas, protobuf, pygal, querystring-parser, scikit-learn, scipy, uuid, zipstream, mlflow
  Running setup.py install for itsdangerous ... done
  Running setup.py install for MarkupSafe ... done
  Running setup.py install for pyyaml ... done
  Running setup.py install for configparser ... done
  Running setup.py install for tabulate ... done
  Running setup.py install for databricks-cli ... done
  Running setup.py install for querystring-parser ... done
  Running setup.py install for uuid ... done
  Running setup.py install for zipstream ... done
  Running setup.py install for mlflow ... done
Successfully installed Flask-1.0.2 Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 awscli-1.15.46 boto3-1.7.46 botocore-1.10.46 certifi-2018.4.16 chardet-3.0.4 click-6.7 colorama-0.3.9 configparser-3.5.0 databricks-cli-0.7.2 docutils-0.14 gitdb2-2.0.3 gitpython-2.1.10 idna-2.7 itsdangerous-0.24 jmespath-0.9.3 mlflow-0.1.0 numpy-1.14.5 pandas-0.23.1 protobuf-3.6.0 pyasn1-0.4.3 pygal-2.4.0 python-dateutil-2.7.3 pytz-2018.4 pyyaml-4.1 querystring-parser-1.2.3 requests-2.19.1 rsa-3.4.2 s3transfer-0.1.13 scikit-learn-0.19.1 scipy-1.1.0 six-1.11.0 smmap2-2.0.3 tabulate-0.8.2 urllib3-1.23 uuid-1.30 zipstream-1.1.4

之后我检查了以下没有给出任何错误:

import os
from mlflow import log_metric, log_param, log_artifact

但是当我尝试 运行 基于 Web 的用户界面时,出现以下错误:

$ mlflow ui
Traceback (most recent call last):
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 574, in _build_master
    ws.require(__requires__)
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 892, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 783, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (PyYAML 4.1 (/home/emre/mlflow/lib/python3.6/site-packages), Requirement.parse('PyYAML<=3.12,>=3.10'), {'awscli'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/emre/mlflow/bin/mlflow", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3088, in <module>
    @_call_aside
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3072, in _call_aside
    f(*args, **kwargs)
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3101, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 576, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 589, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/home/emre/mlflow/lib/python3.6/site-packages/pkg_resources/__init__.py", line 783, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (PyYAML 4.1 (/home/emre/mlflow/lib/python3.6/site-packages), Requirement.parse('PyYAML<=3.12,>=3.10'), {'awscli'})

有什么办法可以解决这个问题吗?

显然我必须在我的虚拟环境中安装 wheel 模块。我删除了虚拟环境,重新创建,然后安装了wheel模块:

pip install wheel

之后 pip install mlflow,以及 mlflow ui 都成功了。