пакет1.модуль.функция и пакет2.модуль.функцияfrom пакет1 import модуль as модуль1 и from пакет2 import модуль as модуль2Чтобы организовать использование одинаковых имен в разных пакетах в Python без конфликтов, можно применить несколько подходов:
        
        # Пакет package_a
        # package_a/module_x.py
        def my_function():
            print("Функция из package_a")
        # Пакет package_b
        # package_b/module_x.py
        def my_function():
            print("Функция из package_b")
        # Использование:
        import package_a.module_x
        import package_b.module_x
        package_a.module_x.my_function()
        package_b.module_x.my_function()
        
      
      В этом случае функции `my_function` из разных пакетов не конфликтуют, потому что они вызываются через имена своих пакетов.  package_a.module_x.my_function() и package_b.module_x.my_function() -  это разные функции, определенные в разных пространствах имен.
    
        
        import package_a.module_x as module_x_a
        import package_b.module_x as module_x_b
        module_x_a.my_function()
        module_x_b.my_function()
        
      
      Это позволяет использовать функции из обоих модулей, не вызывая конфликтов, так как они имеют разные имена в текущем пространстве имен.
    
        
        from package_a.module_x import my_function as my_function_a
        from package_b.module_x import my_function as my_function_b
        my_function_a()
        my_function_b()
        
      
      Этот подход полезен, если вам нужны только определенные функции или классы из модулей.
    Выбор подходящего метода зависит от конкретной ситуации и от того, насколько часто вы используете функции с конфликтующими именами. В большинстве случаев использование пространств имен (прямой импорт с использованием имени пакета) является наиболее чистым и предпочтительным способом.