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)