You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Dian Fu (Jira)" <ji...@apache.org> on 2022/04/25 03:31:00 UTC

[jira] [Created] (FLINK-27373) Disable installing PyFlink using `python setup.py install`

Dian Fu created FLINK-27373:
-------------------------------

             Summary: Disable installing PyFlink using `python setup.py install`
                 Key: FLINK-27373
                 URL: https://issues.apache.org/jira/browse/FLINK-27373
             Project: Flink
          Issue Type: Improvement
          Components: API / Python
            Reporter: Dian Fu
            Assignee: Dian Fu


When users install PyFlink using `pip install .` or `pip install apache-flink`, it will be installed into site-packages with directories as following:
{code}
apache_flink-1.14.4.dist-info
apache_flink_libraries-1.14.4.dist-info
pyflink
{code}

However, if installed using `python setup.py install`, the result directories will be as following:
{code}
apache_flink-1.14.4-py3.8-macosx-10.9-x86_64.egg
apache_flink_libraries-1.14.4-py3.8.egg
{code} 

The consequence of the latter case is that the installed package is problematic. The reason is that it contains jar packages in apache_flink_libraries and currently these jar packages need to be installed together with apache_flink to make them work(under directory pyflink/lib and pyflink/opt).

Users will get the following error when installing PyFlink via "python setup.py install":
{code}
Error: Could not find or load main class org.apache.flink.client.python.PythonGatewayServer
Caused by: java.lang.ClassNotFoundException: org.apache.flink.client.python.PythonGatewayServer
E/Users/dianfu/miniconda3/lib/python3.8/unittest/case.py:704: ResourceWarning: unclosed file <_io.BufferedWriter name=5>
  outcome.errors.clear()
ResourceWarning: Enable tracemalloc to get the object allocation traceback

======================================================================
ERROR: test_scalar_function (test_table_api.TableTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/dianfu/code/src/github/pyflink-faq/testing/test_utils.py", line 122, in setUp
    self.t_env = TableEnvironment.create(EnvironmentSettings.in_streaming_mode())
  File "/Users/dianfu/code/src/github/pyflink-faq/testing/.venv/lib/python3.8/site-packages/apache_flink-1.14.4-py3.8-macosx-10.9-x86_64.egg/pyflink/table/environment_settings.py", line 267, in in_streaming_mode
    get_gateway().jvm.EnvironmentSettings.inStreamingMode())
  File "/Users/dianfu/code/src/github/pyflink-faq/testing/.venv/lib/python3.8/site-packages/apache_flink-1.14.4-py3.8-macosx-10.9-x86_64.egg/pyflink/java_gateway.py", line 62, in get_gateway
    _gateway = launch_gateway()
  File "/Users/dianfu/code/src/github/pyflink-faq/testing/.venv/lib/python3.8/site-packages/apache_flink-1.14.4-py3.8-macosx-10.9-x86_64.egg/pyflink/java_gateway.py", line 112, in launch_gateway
    raise Exception("Java gateway process exited before sending its port number")
Exception: Java gateway process exited before sending its port number
{code}

`python setup.py install` is already deprecated in Python community and it's suggesting to use `pip install`. We have two choices:
- Support installing PyFlink using `python setup.py install`
- Disable installing PyFlink using `python setup.py install` and throw a meaningful exception if users install it with `python setup.py install` to make it more explicit




--
This message was sent by Atlassian Jira
(v8.20.7#820007)